我遇到了谷歌无法解决的问题。为什么该cout适用于int对象,但不适用于以下程序中的字符串对象?
#include<iostream>
using namespace std;
class MyClass {
string val;
public:
//Normal constructor.
MyClass(string i) {
val= i;
cout << "Inside normal constructor\n";
}
//Copy constructor
MyClass(const MyClass &o) {
val = o.val;
cout << "Inside copy constructor.\n";
}
string getval() {return val; }
};
void display(MyClass ob)
{
cout << ob.getval() << endl; //works for int but not strings
}
int main()
{
MyClass a("Hello");
display(a);
return 0;
}
答案 0 :(得分:9)
您必须包含string
标头才能获得重载的operator<<
。
此外,您可能希望从const string&
返回string
而不是getval
,将构造函数更改为接受const string&
而不是string
,并更改display
以接受const MyClass& ob
以避免不必要的复制。
答案 1 :(得分:2)
我不知道什么对你有用,或者如果你已经解决了但是我正在努力解决这个问题...对于你的cout你必须把这行作为cout&lt;&lt; “在这里插入字符串”&lt;&lt; ENDL;你没有把第二个&lt;&lt;在字符串之后。希望这有帮助!