我正在尝试使用参数作为全局的 operator new 来实现。如果没有 args 的 new 重载没有问题,但是在尝试编译时出现以下错误
inline void* operator new(size_t, void* p) {
//...
return p;
}
c:\bjarne_exercise_6.cpp(14): error C2084: function 'void *operator new(size_t,void *) throw()' has a body c:\program files\microsoft visual studio 10.0\vc\include\new( 55) : 见之前对“新”的定义
c:\bjarne_exercise_6.cpp(40): error C2264: 'operator new' : 函数定义或声明错误;未调用函数
我刚刚解决了这个问题,你必须在 #include stdafx.h 之前声明这个 不,不是真的。它编译得很好,但仍然没有调用这个函数,而是来自新头文件的版本。之所以如此,是因为新标头中已经定义了新位置(带有 2 个参数)。普通的 new (只有 1 个 size_t 参数)只在那里声明,所以你仍然可以重载它。因此,如果您想要具有超过 1 个参数的特殊新参数,则以下 @trion 建议的解决方案是合适的。