파생 클래스가있는 기본 클래스가있는 경우 단일 생성자에 전달 된 인수에 따라 저음 또는 파생 클래스로 인스턴스를 만들 수 있습니까?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
는, I는 어느 기능 생성자를 정상적으로 원하는 클래스를 만들거나, (인수로서 주어진 값에 따라) 파생 된 SubClass의 인스턴스로 만듭니다. 매개 변수의 유형뿐만 아니라 다른 매개 변수의 값을 기반으로해야합니다. 이것을 할 수 있습니까? 필요한 경우 하나의 생성자 만 사용해야하는 경우 순수 기본 클래스를 사용하는 대신 '일반'옵션을 나타내는 다른 파생 클래스가 있어야합니다. 이것이 가능하지 않다면 나는 하나 하나가 생성 될 때마다 생성되어야하는 확인해야 할 것 같은
, 오히려 나는이의 인스턴스를 할 때 나는 단지 하위 클래스 생성자를 호출 할 수 있습니다, 그러나 이것은 좋지 않은 생성자 내에서 단일 내부 검사 만하는 것보다
이 공장 디자인 패턴이 생성 공장에 매개 변수를 전달을 위해 무엇이며, 반환하거나 MyClass에 또는 매개 변수에 따라 서브 클래스를 작성하십시오. – mnistic