两个类可以互相访问吗?

时间:2011-04-29 02:01:52

标签: c++

如果我有两个名为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

你能调用每个类的静态函数吗?

3 个答案:

答案 0 :(得分:5)

你必须这样做:

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声明。

答案 1 :(得分:0)

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

class B;

class A { ... };

class A; // assuming separate file

class B { ... };

答案 2 :(得分:0)

你可以制作funcA和funcB Friend方法。