【发布时间】:2023-03-30 18:19:01
【问题描述】:
当我这样声明一个朋友时,g++ 编译器报错:
friend MyClass;
而不是
friend class MyClass;
为什么需要 class 关键字? (Borland C++ 编译器,顺便说一句,不需要它。)
编译器不能简单地在符号表中查找 MyClass 并告诉它被声明为一个类吗? (显然它无论如何都在进行查找,因为它在未声明 MyClass 时会抱怨)
这不像是对类进行前向声明:我仍然必须在上面声明类或至少前向声明它。
如果
对我来说很有意义(实际上会很棒)friend class MyClass;
如果需要,进行前向声明,否则对我来说就像是语法盐。
近 20 年来,我一直在愉快地使用没有 class 或 struct 关键字的 friend 语句,并且没有任何编译器投诉。 这是相当新的东西吗?
【问题讨论】:
-
20 年!您一定一直在与 Bjorn 合作。
-
我在 1989 年左右读研究生时使用 C-Front。从 1991 年左右开始,我主要使用 Borland C++。