2011-04-29 97 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方法。