2011-04-29 99 views
0

如果我有两个类叫做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 

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

回答

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

0

您需要给编译器一个提示,其他类需要定义,因为它是循环依赖。

class B; 

class A { ... }; 

class A; // assuming separate file 

class B { ... }; 
0

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