📜  模板中的 clion:没有匹配的“operator new”函数用于非分配放置新表达式;包括<new>(1)

📅  最后修改于: 2023-12-03 14:55:53.104000             🧑  作者: Mango

模板中的 CLion:没有匹配的“operator new”函数用于非分配放置新表达式;包括

问题描述

在使用 CLion 进行编译时,可能会出现以下错误提示:

没有匹配的“operator new”函数用于非分配放置新表达式;包括<new>

这个错误提示通常会在使用 C++ 进行编程时出现,而且在没有进行任何特殊操作的情况下出现。这个问题主要是由于在使用 new 关键字时,没有正确的定义相应的操作符导致的。

解决方案

解决这个问题的方法其实很简单,只需要在代码中添加一些特殊的操作符定义即可。下面我们介绍两种解决方案:

解决方案 1

在代码中添加以下操作符定义:

void* operator new(std::size_t size) throw(std::bad_alloc) 
{ 
    // your implementation 
} 

void operator delete(void* p) throw() 
{ 
    // your implementation 
}

根据需要,你可以将这些操作符定义到你的 main.cpp 文件中,或是在你的项目的某个头文件中定义。

解决方案 2

另一种解决方案是添加以下头文件:

#include <iostream> 
#include <cstdlib> 
#include <new> 
using namespace std;

添加这些头文件之后,你的代码就可以使用 new 关键字了。

总结

在使用 C++ 进行编程时,遇到 没有匹配的“operator new”函数用于非分配放置新表达式;包括<new> 这个错误提示,通常是由于没有正确的定义相应的操作符导致的。要解决这个问题,只需要在代码中添加相应的操作符定义或是添加相应的头文件即可。