class A { public: B* pB; template<class T> void init() { pB = new T; } }; ... A a; a.init<B>(); a.init<C>();
既然,A类不能修改,且内部管理B类,那么无法让A去管理扩展的C了,因为既然new的是B类,就不可能动态让B变成C类了。
既然C继承于B 完全可以 void init() { pB = new C; }
模板类应该能满足吧,A和B类不需要要公开源代码,派生类按照各自需求实现即可。 class A { public: B* pB; template<class T> void init() { pB = new T; } }; ... A a; a.init<B>(); a.init<C>();
64,648
社区成员
250,503
社区内容
加载中
试试用AI创作助手写篇文章吧