私は基本クラスへのポインタの束を保持するコンテナと、何らかの入力を受け取り、基本クラスのサブクラスであるクラスを返す関数を持っています。それが返すサブクラスは入力に依存します。これを設計する任意のより良い方法がある場合、私は思っていたコンストラクタの巨大なスイッチステートメント
class Base { ... }
class A : public Base { ... }
class B : public Base { ... }
...
class Z : public Base { ... }
Base* depends(int input) {
switch (input) {
case 1:
return new A(...);
case 2:
return new B(...);
...
case 26:
return new Z(...);
default:
...
}
}
:
は今のところ、私はこのような巨大なswitch文を持っています。私は多くの "デザインパターン"(私は彼らが呼んでいると思う)を知らないので、これを設計する(明らかな)よりよい方法があるかどうかわかりません。
あなたのキーをクラスやクラス名(あるいはあなたのキーがintの場合は配列)にマッピングするディクショナリを持つことは素晴らしいことです。しかしこれは可能ですか?同様の質問を参照してください:http://stackoverflow.com/questions/582331/c-is-there-a-way-to-instantiate-objects-from-a-string-holding-their-class-name –
@レイ感謝リンクについては、その質問は私のものと非常に似ており、かなり多くの回答があります。 –