我有一个类为 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*,但我也不想实现。
最佳答案
C++ 标准说像这样的隐式转换不适用于省略号参数——编译器如何知道要应用什么转换?您必须自己明确执行转换,或者最好停止使用 printf。
关于c++ - 用户定义的转换运算符作为 printf 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486713/