我有一个基类,其中将有许多派生类。但是,它是指向存储在我程序的容器中的基类的指针,因此它可以遍历并在它们上调用虚函数。
我有另一个类将基类指针添加到此容器中,因此当派生类被new
编辑(不是裸)时,它们必须返回或存储为基类指针。
我正在考虑使用模板为我做一个简单的基类工厂方法:
template<class T> //T is the derived class
static T* Factory(){
return static_cast<T*>(functionThatAddsBaseClassPointerToContainer(new T));
}
我看到两个主要的优点/缺点:
优点:不需要为每个派生类重写它
T
缺点:通过作为不是从我的基础派生的类类型传递可能会被错误地使用。
有没有办法确保T
在这个函数内部派生Factory
?或者我可以期望编译器捕获T
不是派生的实例吗?
这种通用方法是一个可以接受的想法,还是有更好的选择?