表達要講很多,直接寫偽代碼 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的方法,直接用代碼寫,我不敢說沒有,但是我想很難