我将重载operator new操作符,代码如下:
class A {
public:
void* operator new(size_t) { return (void*) Buf; }
};
当我尝试编译时,出现了“声明operator new为非函数错误”的提示。请问有人能帮我解决吗?
class A {
public:
void* operator new(size_t) { return (void*) Buf; }
};
当我尝试编译时,出现了“声明operator new为非函数错误”的提示。请问有人能帮我解决吗?
你是否定义了size_t
? 在使用之前,需要包含stddef.h
头文件。但更好的做法是包含cstddef
并使用std::size_t
。
除了总是返回Buf
的语义被搞乱了之外,你的声明看起来还不错。 operator new
应该返回一个大小为第一个参数指定的缓冲区。
我猜测你正在使用一个相当现代和严格的编译器。你遇到的错误是因为size_t
未被识别。严格来说,你需要#include
一些定义它的东西,并且你还应该使用C++名称:std::size_t
。
例如:
#include <cstddef>
class A{
public:
void* operator new(std::size_t) { return (void*) Buf;}
};