在c ++中思考的朋友迭代器和朋友类迭代器有什么区别?

Ali*_*ter 7 c++ friend friend-class

在Thinking in C++第1卷,第16章:模板简介中.上下文:

请注意,而不是只说:

friend iterator; // Make it a friend 
Run Code Online (Sandbox Code Playgroud)

这段代码有:

friend class iterator; // Make it a friend
Run Code Online (Sandbox Code Playgroud)

这很重要,因为名称"iterator"已经在包含文件的范围内.

Eckel上面的意思是什么?它似乎friend iterator正确编译,我看不出差异.有人能说出答案吗?谢谢

Alo*_*ave 6

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

精细类型说明符应在类的朋友声明中使用.

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

什么是详细说明类型说明符
C++使用详细的类型说明符来明确告诉编译器将类视为一个类.我觉得MSDN可以解释它比我好得多,因此,检查出了详细的解释.