两个类可以互相访问吗?

Can two classes access each other?

本文关键字:访问 两个      更新时间:2023-10-16

如果我有两个类A和B,

注意:以下代码不能编译。

class A
{
public:
   static void funcA() {}
   void call_funcB() { B::funcB(); } // call class B's function
};
class B
{
public:
   static void funcB() {}
   void call_funcA() { A::funcA(); } // call class A's function
};

错误:

error C2653: 'B' : is not a class or namespace name
error C3861: 'funcB': identifier not found

可以调用每个类的静态函数吗?

你必须这样做:

class A
{
public:
   static void funcA() {}
   void call_funcB() ;
};
class B
{
public:
   static void funcB() {}
   void call_funcA() { A::funcA(); } // call class A's function
};
   void A::call_funcB() { B::funcB(); } // call class B's function

允许A::call_funcB()看到B的声明

你需要给编译器一个提示,另一个类必须被定义,因为它是一个循环依赖。

class B;
class A { ... };
class A; // assuming separate file
class B { ... };

可以将funcA和funcB设为友元方法