c++ - 预期初始化程序位于 ‘&’ token 之前

标签 c++

我写了一个简单的例子,来自《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&运算符

谁能提供线索吗?

最佳答案

您有四个主要错误:

首先,结构声明后缺少分号。每个之后,classstruct您需要放置 ; 的声明.

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

第三,您缺少 std::string标题,您应该引用stringstd:: 一起上课前缀。

最后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;
}

will compile just fine .

关于c++ - 预期初始化程序位于 ‘&’ token 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22703587/

相关文章:

c++ - C++ 中用于可变长度记录的无锁共享内存

c++ - 再次出现错误 C2248

java - 姓名错误更正

c++ - 是否有更简洁的方法来包含基于宏定义部分名称的文件?

java - 如何从 C++ 代码 (android) 调用非静态 Java 方法?

c++ - 对象的引用计数通常存储在哪里?

c++ - 当特定条件为真时,如何在 Eclipse 中以编程方式设置 C++ 断点?

c++ - 堆上数组的初始化

C++ : template class vs two classes : efficiency

c++ - 在xml中获取子节点的名称将返回#text C++