有一个类有两个类似的构造函数...
class CX
{
public:
CX(HEADER header,
__int64 i64Id);
CX(HEADER header,
const char* pszName);
// other methods...
};我想用空指针调用第二个构造函数。
CX *data1 = new CX(&header, NULL);
//it is ambiguous call to overloaded function
CX *data2 = new CX(&header, (const char*)NULL);
// is correct, but against our coding standards...
CX *data3 = new CX(&header, static_cast<const char*>(NULL));
// is correct, but agains our coding standards...
const char* pszName = NULL;
CX *data4 = new CX(&header, pszName);
// this is correct but waste of stack.有没有更好的方法来选择构造器?
(nullptr将是这种情况下的解决方案,但这是不可能的,因为它应该是可用VC6编译的)
发布于 2013-08-08 19:54:35
您可以修改第二个构造函数,将NULL作为默认参数,并将其称为传递第一个参数作为唯一参数
CX(HEADER header,const char* pszName=NULL);
https://stackoverflow.com/questions/18125196
复制相似问题