用NEW生成对象时的error C2660(详细见下)

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:43:39
我用这个语句准备生成一对象:CPoint_Param * param = new CPoint_Param();
其中类继承关系如下:CPoint_Param: public CParameter_Base: public CObject_Base,在类CObject_Base中有如下重载函数:void* operator new(unsigned int size);void* operator new [](unsigned int size);
编连是出错:error C2660: “CObject_Base::operator new” : 函数不接受 3 个参数。
我在new前加 :: 时不报错,但用param来调用成员函数是不行的。我想在这两种情况下对象其实都没生成成功,虽然param!=NULL;请问这个问题是怎么回事?我只有20分积分来悬赏:),请高手指点。多谢!
CPoint_Param *param = new CPoint_Param;试试
另外vc6中无operator new[],定义它有可能会出现问题。

你说的这种情况我也试过了,结果还是一样.另外我的环境是.NET03或05.

inline void* CObject_Base::operator new(unsigned int size)
{
void* alloc = ::operator new( size );
return alloc;
}

就象你所说的,把“#define new DEBUG_NEW”这一句注释掉,问题就解决了,多谢您!但DEBUG版和RELEASE版都不注释的话都会出错,这点又有点奇怪,你怎么看?

我看了那篇资料了,很不错,网上难找到这样的文章,我的问题也解决了,真的非常感谢!

CPoint_Param *param = new CPoint_Param;试试
另外vc6中无operator new[],定义它有可能会出现问题。

operator new()内部实现是怎样的

照你目前的给出的代码来说应该是没有什么错误的。编译release版会出错么?如果不会的话,应该就是debug版的宏定义的问题。把“#define new DEBUG_NEW”这1句注释掉看看。

具体的解释你可以参看这篇文章:
http://blog.csdn.net/pll621/archive/2005/06/13/393302.aspx