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

时间:2014-03-28 03:23:10

标签: 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 ++在编译时返回了错误消息 错误:在'&amp;'标记

之前的预期初始值设定项

ps:&amp;上面提到的令牌属于ostream&amp;操作

任何人都可以提供线索吗?

1 个答案:

答案 0 :(得分:4)

您有四个主要错误:

首先,在结构声明后你缺少分号。在每个classstruct声明后,您需要设置;

其次ostream不是标识符,您可能打算使用std::ostreamostream标准标题中的<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;
}

will compile just fine