2013-03-15 25 views
2

我在C++ CLI中使用此代碼。但是,這不應該與C++有任何區別。
我正在尋找解決方案來擺脫那個錯誤。爲什麼在前向聲明後出現未定義的類型錯誤?

代碼:

ref class B; 
ref class A; 

public ref class A 
{ 
public: 
    A() {} 
    B^ b; 
    void HelloFromA(){ 
     b->HelloFromB(); 
    } 
}; 

public ref class B 
{ 
public : 
    A^ a; 
    B() {} 
    void HelloFromB(){ 
     a->HelloFromA(); 
    } 
}; 
+0

你正在得到什麼確切的錯誤? – 2013-03-15 10:25:54

回答

7

你需要移動來調用成員函數的前置聲明類頭外的職能機構,到定義可用的地方:

void A::HelloFromA(){ 
    b->HelloFromB(); 
} 

否則,編譯器知道B可用,但它不知道BHelloFromB成員函數不帶任何參數。

+0

現在感謝您的工作。但是,你知道任何解決方案,爲我做?因爲已經有7000行代碼在頭文件中定義了。 – 2013-03-15 10:37:42

+2

@Mahdi Visual Assist X提供了[將實現移動到源文件](http://www.wholetomato.com/products/features/moveImplementation.asp)重構能力。 – dasblinkenlight 2013-03-15 10:42:12

+0

@Mahdi正確的解決方案是將其移動到'cpp'文件! – 2013-03-15 10:42:25

相關問題