TCHAR* のユーザー定義演算子を定義したクラスがあります。
CMyClass::operator const TCHAR*() const
{
// returns text as const TCHAR*
}
みたいなことができるようになりたい
CMyClass myClass;
_tprintf(_T("%s"), myClass);
あるいは
_tprintf(_T("%s"), CMyClass(value));
しかし、試してみると、printf は常に値の代わりに (null) を出力します。また、通常の char* 演算子や、const などのバリエーションも試しました。演算子を明示的に呼び出すか、次のようにキャストした場合にのみ正しく機能します。
_tprintf(_T("%s\n"), (const TCHAR*)myClass);
_tprintf(_T("%s\n"), myClass.operator const TCHAR *());
しかし、私はキャストしたくありません。これはどのように達成できますか?
const TCHAR* のパラメーターを持つ関数を作成して、演算子 TCHAR* を強制的に呼び出す可能性があることに注意してください。ただし、これも実装したくありません。