我想在我的Base
類中包含一個Composed
對象,並且有不同的派生類具有不同的配置。但Composed
類需要構造函數中的參數,並且我無法控制其體系結構。如何初始化派生類中需要構造函數參數的成員對象?
編譯器報告錯誤,因爲Composed
的參數應該在Base
類的初始化時傳遞。但我只希望它在派生類中初始化。在這種情況下我該怎麼辦?
class Base{
public:
Base(); //Error
protected:
Composed comp;
};
class Composed{
public:
Composed(int id):id(id);
private:
int id;
};
class Derived_1:public Base{
public:
Derived():comp(1234){};
};
class Derived_2:public Base{
public:
Derived():comp(2345){};
};
應該'Base'甚至有一個構造函數嗎?它可以做成純粹的虛擬?如果它有一個'Composed'成員但沒有初始化它,有沒有使用'Base'對象? – Biffen
很有道理!你能給出一個代碼示例嗎? –
什麼?一個不存在的構造函數? – Biffen