2016-02-19 103 views
-1

我正在寫一個cpp程序,我遇到了一個問題。它看起來很「容易」,但仍然無法找到如何擺脫它。C++簡單代碼與類

這裏的問題的一個簡化版本:

class a 
{ 
public: 
    int number; 
    a(); 
    a(int x); 
    void set_num(int n); 
}; 
a::a() 
{ 

} 

a::a(int x) 
{ 
    number = x; 
} 
void a::set_num(int n) 
{ 
    number = n; 
} 

class b 
{ 
public: 
    a abcdef(); 

    b(); 
    b(int x); 
}; 

b::b(int x) 
{ 
    abcdef.set_num(x); 
} 

我想用「類」 -s在「B類」複製,我想用在「set_num」功能給它的值「b」 -s構造後,我與它的默認構造函數( 「一ABCDEF();」)創建它

但是當我運行的代碼,它說:

錯誤:「((b *)本) - > b :: abcdef'沒有類的類型。

任何想法,如何解決這個問題?

感謝您的幫助。

+3

'abcdef'被聲明爲返回一個'了'功能。將該行更改爲'a abcdef;'(不帶'()')來聲明一個變量。 –

回答

2

當你寫:

a abcdef(); // oops, do you really want this ? 

這意味着你必須在你b類的成員函數,不帶任何參數,並返回一個。

從你的解釋我知道你肯定想要一個a對象作爲成員:

a abcdef; // this is a member variable that you can set with setnum. 
1

因爲你沒有定義a類型的成員,但不帶參數,並返回一個a的功能。

而是寫:

a abcdef;