Выберите один из двух перегруженных методов

Есть класс с двумя похожими конструкторами …

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)

0

Решение

Вы можете модифицировать 2-й конструктор, принимая NULL в качестве аргумента по умолчанию и вызывая его, передавая первый аргумент в качестве единственного аргумента

CX (заголовок заголовка,
const char * pszName = NULL);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]