小编BC.*_*BC.的帖子

用户定义的转换运算符作为printf的参数

我有一个类为TCHAR*定义了一个用户定义的运算符,就像这样

CMyClass::operator const TCHAR*() const
{
    // returns text as const TCHAR*
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做类似的事情

CMyClass myClass;
_tprintf(_T("%s"), myClass);
Run Code Online (Sandbox Code Playgroud)

甚至

_tprintf(_T("%s"), CMyClass(value));
Run Code Online (Sandbox Code Playgroud)

但是在尝试时,printf总是打印(null)而不是值.我也尝试了一个普通的char*运算符,以及const等变量.它只有在我明确调用运算符或执行转换时才能正常工作

_tprintf(_T("%s\n"), (const TCHAR*)myClass);
_tprintf(_T("%s\n"), myClass.operator const TCHAR *());
Run Code Online (Sandbox Code Playgroud)

但是,我不想演员.怎么能实现这一目标?

注意,一种可能性是创建一个具有const TCHAR*参数的函数,以便它强制调用运算符TCHAR*,但这也是我不想实现的.

c++ printf tchar user-defined operator-keyword

3
推荐指数
1
解决办法
1551
查看次数

标签 统计

c++ ×1

operator-keyword ×1

printf ×1

tchar ×1

user-defined ×1