调用构造函数而不将其赋值给任何变量c
发布时间:2020-12-16 06:02:20 所属栏目:百科 来源:网络整理
导读:这可能是一个非常愚蠢的问题,但我甚至不知道应该写什么来寻找答案.我甚至不确定我给的标题是否正确. 如果我有这样的构造函数: CError(const std::string msg) { showMessage(msg) } 而且我想这样称呼它…… CError("some message"); …一切正常,但是当在某
这可能是一个非常愚蠢的问题,但我甚至不知道应该写什么来寻找答案.我甚至不确定我给的标题是否正确.
如果我有这样的构造函数: 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); 然而,亟待解决的问题是:为什么这样做?如果你不打算以任何方式使用构造的对象,为什么不简单地使它成为一个静态成员函数,甚至只是一个普通的旧函数? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |