这是我的玩具程序。它无法编译并显示错误消息“没有运算符<<与这些操作数匹配”。任何帮助将不胜感激。
struct foo {
std::string name;
};
std::ostringstream& operator<<(std::ostringstream& os, const foo& info)
{
os << info.name;
return os;
}
void insert(const foo& info)
{
std::ostringstream os;
os << "Inserted here " << info; // don't work here
}
int main()
{
foo f1;
f1.name = "Hello";
insert(f1);
}
答案 0 :(得分:4)
原因
os << "Inserted here " << info;
不起作用是
os << "Inserted here "
返回std::ostream&
,而不是std::ostringstream&
。
选项:
将功能更改为使用std::ostream
而不是std::ostringstream
。
std::ostream& operator<<(std::ostream& os, const foo& info) { ... }
更改使用方式。使用
os << "Inserted here ";
os << info;
我强烈建议您使用第一个选项。