2014-03-28 128 views
2

我写这些来自书“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的&操作

会有人提供线索?

+10

'struct'声明后缺少分号。是的,使用std。 (删除问题时,你可以:-) – dasblinkenlight

+1

也'INT号码,然后'a.number =“12345”'是你打算做什么? – billz

+1

dasblinkenlight是正确的,结构声明后缺少分号是原因。谢谢! – prgbenz

回答

3

你有四个主要的错误:

首先你是结构声明后失踪分号。在每一个,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

相关问题