我有一個容器,它包含一堆指向基類的指針,以及一個函數,它接受一些輸入並返回一個類,它是基類的一個子類。它返回哪個子類取決於輸入。構造函數的巨型開關語句
現在,我有一個巨大的switch語句是這樣的:
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:
...
}
}
我想知道是否有任何更好的方法來設計這個。我不知道許多「設計模式」(我認爲這就是他們所稱的),所以我不知道是否有一個(明顯的)更好的設計方法。
將字典映射到類或類名(如果您的鍵是整數,只是一個數組),這將是一件好事。但是這可能嗎?看到類似的問題:http://stackoverflow.com/questions/582331/c-is-there-a-way-to-instantiate-objects-from-a-string-holding-their-class-name –
@Ray謝謝對於這個鏈接來說,這個問題與我的非常相似,並且幾乎回答了這個問題。 –