我写了一个简单的例子,来自《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++ 编译时返回错误消息 错误:预期在“&”标记之前初始化
ps:上面提到的&标记属于ostream&运算符
谁能提供线索吗?
最佳答案
您有四个主要错误:
首先,结构声明后缺少分号。每个之后,class
或struct
您需要放置 ;
的声明.
其次ostream
不是标识符,您可能想使用 std::ostream
。 ostream
,在<ostream>
中标准 header ,位于 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;
}
关于c++ - 预期初始化程序位于 ‘&’ token 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22703587/