gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:47:17 24 4
gpt4 key购买 nike

我有一个类为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com