【发布时间】:2020-03-08 13:30:39
【问题描述】:
所以我有这个小sn-p,它认为“abc”不是字符串而是const char [4],所以我不能将它分配给我的对象。我已经搜索但没有找到任何可行的解决方案。提前致谢。
Tekst t = "abc";
Tekst Tekst::operator=(std::string& _text){
return Tekst(_text);
}
编辑:由于这是我的面向对象编程课程中几乎所有练习的主要内容,无论出于何种原因,我们都无法更改int main() 中的任何内容,因此更改Tekst t = "abc"; 是不行的。
编辑 2:Tekst(std::string _text) :text(_text) {};
【问题讨论】:
-
您的
operator=看起来不正确。 Here's如何正确操作。 -
"它认为 "abc" 不是字符串,而是 const char [4]" 它并不“认为”它是。
"abc"实际上是const char [4]类型。为什么你认为应该是std::string? -
另外,您能edit your question 并发布
Tekst的构造代码吗? -
提供
operator=(const char*)怎么样? -
另外,相关Why not non-const reference to temporary objects?。 TLDR:如果您使用
const引用参数:Tekst Tekst::operator=(std::string const& _text)它会编译。
标签: c++ string class char constants