1
messyidea 2014-12-18 00:39:20 +08:00 via Android
你说的是多态么。写一个虚类,然后aa和bb分别继承它,实现虚类的接口。
|
2
302790951 OP @messyidea 不是这样的,比如写一个shop类,里面各种商品属性,然后实例化shop apple,shop orange,我想可以用户输入apple类调用apple的属性,输入orange调用orange的属性
|
3
jybox 2014-12-18 01:40:10 +08:00
把名字和指针存到一个 map 里,根据用户输入来调用相应指针。
想在运行时反射变量名,虽然也许可以做到,但在 C++ 里肯定不算优雅。 当然,其实大部分 C++ 代码也没啥优雅可言 ... |
5
sqbing 2014-12-18 10:07:34 +08:00
|
6
fliar 2014-12-18 10:39:29 +08:00
表達要講很多,直接寫偽代碼
class A : public Base { public static const char * = "a"; public static Base* Make(){return new A()};} class B : public Base { public static const char * = "b"; public static Base* Make(){return new B()};} 那麼你需要一個map來保存所有類的Make,這樣你就可以*map["a“]()來創建類 接下來你一定會想我怎麼自動把Make註冊進map 利用global是可行的,但是有局限性,在靜態庫中global就不能勝任 簡單說,完全自動註冊Make的方法,直接用代碼寫,我不敢說沒有,但是我想很難 反射算是複雜功能,c++標準一直都沒有加進去 |