在 Thinking in C++ Volume 1,第 16 章:模板简介。上下文:
请注意,不要只是说:
friend iterator; // Make it a friend
这段代码有:
friend class iterator; // Make it a friend
这很重要,因为名称“迭代器”已经在范围内,来自包含的文件。
Eckel 上面的真正含义是什么?它似乎friend iterator
编译正确,我看不出差异。谁能告诉答案?谢谢
在 Thinking in C++ Volume 1,第 16 章:模板简介。上下文:
请注意,不要只是说:
friend iterator; // Make it a friend
这段代码有:
friend class iterator; // Make it a friend
这很重要,因为名称“迭代器”已经在范围内,来自包含的文件。
Eckel 上面的真正含义是什么?它似乎friend iterator
编译正确,我看不出差异。谁能告诉答案?谢谢
根据 C++03 标准第 11.4 节:
在类的友元声明中应使用详细类型说明符。
因此,根据规范,编译器会警告您的朋友声明iterator
必须是详细的类名。如果不是,则编译器在此特定方面不符合标准。
什么是详细类型说明符?
C++ 使用详细的类型说明符来明确告诉编译器将类视为类。我认为 MSDN 可以比我更好地解释它,因此请查看此以获取详细说明。