相关疑难解决方法(0)

声明朋友时必须声明一个类键

当我声明一个朋友时,g ++编译器会抱怨这个错误:

friend MyClass;
Run Code Online (Sandbox Code Playgroud)

代替

friend class MyClass;
Run Code Online (Sandbox Code Playgroud)

为什么要使用class关键字?(Borland C++编译器,BTW,不需要它.)

难道编译器不能简单地在符号表中查找MyClass并告诉它被声明为一个类吗?(显然它正在进行查找,因为它在没有声明MyClass时会抱怨)

它不像是在进行类的前向声明:我仍然必须要么声明上面的类,要么至少要向前声明它.

这对我来说是有道理的(实际上会很棒)

friend class MyClass;
Run Code Online (Sandbox Code Playgroud)

如果需要,我会做出前瞻性声明,否则它对我来说就像是语法上的盐.

我已经愉快地使用没有classstruct关键字的friend语句,近20年没有编译器投诉.这是一个相当新的东西吗?

c++ friend

23
推荐指数
2
解决办法
1万
查看次数

为什么我不能通过typedef声明朋友?

有谁知道为什么类名的typedef不像朋友声明的类名那样工作?

class A
{
public:
};

class B : public A
{
public:
   typedef A SUPERCLASS;
};

typedef A X;

class C
{
public:
   friend class A;             // OK
   friend class X;             // fails
   friend class B::SUPERCLASS; // fails
};
Run Code Online (Sandbox Code Playgroud)

c++

18
推荐指数
1
解决办法
4251
查看次数

标签 统计

c++ ×2

friend ×1