我写了一个简单的例子来源于这本书" The C ++ Programming.Language.4th.Edition"
#include <ostream>
struct Entry{
string name;
int number;
}
ostream& operator<<(ostream& os, const Entry& e){
return os << "{\"" << e.name << "\"," << e.number << "}";
}
int main()
{
Entry a;
a.name = "Alan";
a.number = "12345";
return 0;
}
g ++在编译时返回了错误消息 错误:在'&amp;'标记
之前的预期初始值设定项ps:&amp;上面提到的令牌属于ostream&amp;操作
任何人都可以提供线索吗?
答案 0 :(得分:4)
您有四个主要错误:
首先,在结构声明后你缺少分号。在每个class
或struct
声明后,您需要设置;
。
其次ostream
不是标识符,您可能打算使用std::ostream
。 ostream
标准标题中的<ostream>
位于std
命名空间中。
第三,您错过了std::string
标题,您应该引用string
类,前缀为std::
。
最后,number
的类型为int,而不是const char*
类型,就像文字"12345"
一样。你可能想写:a.number = 12345;
。
完成所有这些修复后,您的程序将如下所示:
#include <ostream>
#include <string>
struct Entry{
std::string name;
int number;
};
std::ostream& operator<<(std::ostream& os, const Entry& e){
return os << "{\"" << e.name << "\"," << e.number << "}";
}
int main()
{
Entry a;
a.name = "Alan";
a.number = 12345;
}