2013-08-16 51 views
0

我有以下MFC(C++)代码,它分配一个指向数组的指针而不需要在内存不足的情况下引发异常。我与Visual Studio 2008CArray的新操作符导致错误

struct MY_ITEM_INFO 
{ 
    CString str; 
    int n; 

    MY_ITEM_INFO() 
    { 
     n = 0; 
    } 
}; 

CArray<MY_ITEM_INFO>* pArrResItems = new (std::nothrow) CArray<MY_ITEM_INFO>(); 
if(pArrResItems != NULL) 
{ 
    //Got it! 

    //Remove it 
    delete pArrResItems; 
} 

编译它使我有以下错误消息在new运营线,当我尝试编译:

error C2665: 'CObject::operator new' : none of the 3 overloads could convert all the argument types 
could be 'void *CObject::operator new(size_t,void *)' 

任何想法如何使它编译?

+0

您可以先检查是否可以编译“new”的默认版本 – Deqing

回答

1

好的。我得到了它,在new行应该已经本(或采取new运营商从全局命名空间):

CArray<MY_ITEM_INFO>* pArrResItems = ::new (std::nothrow) CArray<MY_ITEM_INFO>(); 

显然,new运营商的CObject不支持nothrow_t