如果我有一個派生類的基類,是否有可能創建實例作爲低音或派生類依賴傳遞給單個構造函數的參數?C++可以創建派生而不是低音類依賴於給單個構造函數的參數嗎?
例如代碼:
//Base Class
class MyClass {
public:
//All instances created with this constructor
MyClass(int param1, int param2) {
if (param1 > param2) { //(for example)
// TODO - create this object as SubClass instead
} else {
//normal base class construction
}
}
}
//Derived Class
class SubClass {
public:
SubClass(int param1, int param2) {
//Subclass construction
}
void function() {
//function that only works on subclass objects
}
}
MyClass object1(1, 2); //should create MyClass object
MyClass object2(2, 1); //should create SubClass object
如上所示,創建這個類的一個實例時,我想構造要麼功能正常,使類,或(取決於給定爲參數的值)使其成爲派生子類的一個實例。請注意,它必須基於不同參數的值,而不僅僅是它們的類型。是否有可能做到這一點?如果有必要的話,只要有一個構造函數必須被使用,它就會有另一個派生類來表示'normal'選項(而不是使用純低音類)。
如果這是不可能的,我可以只需調用子類構造函數時,我想這方面的一個例子,但是這並不理想,因爲我會檢查哪一個應該每一個被創建時被創建,而而不僅僅是在構造函數中進行一次內部檢查。
這是工廠設計模式是,你傳遞的參數爲工廠創建,並返回要麼MyClass的或基於參數的子類。 – mnistic