如果我有一个派生类的基类,是否有可能创建实例作为低音或派生类依赖传递给单个构造函数的参数?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