7

在 Thinking in C++ Volume 1,第 16 章:模板简介。上下文:

请注意,不要只是说:

friend iterator; // Make it a friend 

这段代码有:

friend class iterator; // Make it a friend

这很重要,因为名称“迭代器”已经在范围内,来自包含的文件。

Eckel 上面的真正含义是什么?它似乎friend iterator编译正确,我看不出差异。谁能告诉答案?谢谢

4

1 回答 1

6

根据 C++03 标准第 11.4 节:

在类的友元声明中应使用详细类型说明符。

因此,根据规范,编译器会警告您的朋友声明iterator必须是详细的类名。如果不是,则编译器在此特定方面不符合标准。

什么是详细类型说明符
C++ 使用详细的类型说明符来明确告诉编译器将类视为类。我认为 MSDN 可以比我更好地解释它,因此请查看以获取详细说明。

于 2011-06-01T03:43:26.463 回答