У меня есть класс, который определил пользовательский оператор для TCHAR *, например,
CMyClass::operator const TCHAR*() const
{
// returns text as const TCHAR*
}
Я хочу иметь возможность сделать что-то вроде
CMyClass myClass;
_tprintf(_T("%s"), myClass);
или даже
_tprintf(_T("%s"), CMyClass(value));
Но при попытке printf всегда печатает (ноль) вместо значения. Я также попробовал обычный оператор char *, а также варианты с const и т. Д.
Это работает правильно, только если я явно вызываю оператор или выполняю приведение типа, например
_tprintf(_T("%s\n"), (const TCHAR*)myClass);
_tprintf(_T("%s\n"), myClass.operator const TCHAR *());
Однако я не хочу разыгрывать. Как этого достичь?
Обратите внимание, что существует возможность создать функцию, имеющую параметр const TCHAR *, чтобы она принудительно вызывала оператор TCHAR *, но это я тоже не хочу реализовывать.