加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:16:31 所属栏目:百科 来源:网络整理
导读:我有一个类为TCHAR *定义了一个用户定义的运算符,就像这样 CMyClass::operator const TCHAR*() const{ // returns text as const TCHAR*} 我希望能够做类似的事情 CMyClass myClass;_tprintf(_T("%s"),myClass); 甚至 _tprintf(_T("%s"),CMyClass(value));
我有一个类为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("%sn"),(const TCHAR*)myClass);
_tprintf(_T("%sn"),myClass.operator const TCHAR *());

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

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

解决方法

避免转换运算符.他们很少做你想做的事情,然后明确的电话是痛苦的.将运算符const TCHAR *()const重命名为TCHAR * str()const.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读