调用构造函数而不将其赋值给任何变量c

调用构造函数而不将其赋值给任何变量c,第1张

概述这可能是一个非常愚蠢的问题,但我甚至不知道应该写什么来寻找答案.我甚至不确定我给的标题是否正确. 如果我有这样的构造函数: CError(const std::string& msg) { showMessage(msg) } 而且我想这样称呼它…… CError("some message"); …一切正常,但是当在某个变量中指定了字符串时,我收到一条错误“类CError的默认构造函数不存在”: 这可能是一个非常愚蠢的问题,但我甚至不知道应该写什么来寻找答案.我甚至不确定我给的标题是否正确.

如果我有这样的构造函数:

CError(const std::string& msg) { showMessage(msg) }

而且我想这样称呼它……

CError("some message");

…一切正常,但是当在某个变量中指定了字符串时,我收到一条错误“类CError的默认构造函数不存在”:

std::string str = "some message";CError(str);

当我这样写它时,它有效:

std::string str = "some message";CError err(str);

但我只是不需要这个错误的对象.

任何人都可以解释我为什么不能只调用构造函数本身?

提前谢谢你的答案.

解决方法 线CError(str);被解析为CError str;,它定义了一个新变量str.我的编译器失败的方式不同,这使问题更加明显:用不同的类型重新定义’str’.

解决此问题的一个简单方法是转换对象:

(voID)CError(str);

然而,亟待解决的问题是:为什么这样做?如果你不打算以任何方式使用构造的对象,为什么不简单地使它成为一个静态成员函数,甚至只是一个普通的旧函数?

总结

以上是内存溢出为你收集整理的调用构造函数而不将其赋值给任何变量c全部内容,希望文章能够帮你解决调用构造函数而不将其赋值给任何变量c所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存