這是一個極端新手問題很可能,但這是我不明白的東西。這可能是愚蠢的簡單,但我沒有很多的C++經驗,我正在努力學習。C++類的成員與構造函數
我試圖用我想了解的簡化版本來解釋它。
我有一個叫做Foo的類。它的構造函數有兩個參數。
我有一個名爲Bob的類,我想要一個Foo的私有實例,但是,我不知道傳遞給foo構造函數的參數,直到我進入到Bob的構造函數中。
class Foo
{
public:
Foo(int a, int b);
~Foo();
int getA();
int getB();
};
class Bob
{
public:
Bob();
~Bob();
void DoSomethingHere();
private:
Foo foo;
};
當我編譯代碼時出現錯誤。
error: no matching function for call to 'Foo::Foo()'
基於此,我猜測它試圖自動調用foo的構造函數,但不知道如何。 在Bob類的代碼中,我想要做這樣的事情。 (bob.cpp)
Bob::Bob() {
// do stuff to calculate the values of a and b
int a = 12; int b = 23;
// Initialize foo with the calculated values
}
鑑於我不知道傳遞給它的參數,直到我在Bob的代碼中,我該如何處理?
關鍵字:'成員初始化list' –
'Foo'沒有默認的構造函數。使'foo'成爲一個指針/智能指針,它將在'Bob'中初始化。或者爲'Foo'提供默認的ctor,並添加類似'void Foo :: setA(...)','void Foo :: setB(...)'的方法,這個方法將在'Bob' ctor中調用。 –
'Bob :: Bob():Foo(calc_a(),calc_b()){}' –