2010-09-15 54 views
0

我有一個代碼,如何正確投射物體?

class foo : public bar 
{ 
public: 
    foo(){}; 
    ~foo(){}; 
}; 

class wu 
{ 
public: 
    wu(const bar& Bar) : 
     m_bar(Bar) 
    {}; 
    ~wu(){}; 

private: 
    bar m_bar; 

}; 

int main() 
{ 
    foo tmpFoo; 
    wu tmpWu(tmpFoo); 
} 

現在我的問題是,上面的代碼將無法編譯和錯誤消息是「錯誤:變量武tmpWu有初始值設定但類型不完全」。

這是否意味着,我必須投的tmpFoo對象欄類?

請指教。

謝謝。

+1

在於,在完整的代碼?如果沒有定義'bar',這將無法編譯。 – 2010-09-15 05:59:27

+0

你得到的錯誤與編輯的代碼也? (假設'bar'類中已定義) – Naveen 2010-09-15 05:59:43

+0

是,它不是完整的或實際的代碼,但相同的邏輯。 – domlao 2010-09-15 06:01:23

回答

5

在類構造函數wu中必須使用語法m_bar(Bar)而不是m_bar = Bar。此外,刪除從tmpFoo變量聲明的括號,否則你將被宣佈返回foo對象和接收參數的函數。


您的編輯後:我試過了代碼,並給問題是,bar類是不確定的。在你的情況下,編譯器給出了一個「不完整類型」的錯誤;這意味着,包含文件中(或在同一個文件)的地方,類bar聲明是這樣的:

class bar; 

但從未定義它的內容。

+0

謝謝,我剛剛編輯。 – domlao 2010-09-15 05:56:49

+0

非常感謝您,但請假設酒吧已定義。 – domlao 2010-09-15 06:04:54

+2

@sasayins:如果'bar'被定義爲'class bar {};'它可以很好地... – 2010-09-15 06:15:54

4

加入

class bar {}; 

你的代碼爲我工作。我錯過了什麼嗎?