"&"标记之前的预期初始值设定项

expected initializer before ‘&’ token

本文关键字:      更新时间:2023-10-16

我写了一个简单的例子,它来自于《c++编程语言第4版》

#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: the &上述Token属于ostream&操作符

谁能给点提示?

你有四个主要错误:

首先,您在结构声明后缺少分号。在每个classstruct声明之后,您需要添加;

其次,ostream不是标识符,您可能想使用std::ostream<ostream>标准头中的ostream位于std命名空间中。

第三,您缺少std::string头,您应该使用std::前缀引用string类。

最后number是int类型,不像字面量"12345"const char*类型。你可能想写: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;
}
相关文章:
  • 没有找到相关文章