好吧,我需要返回一个指向将在函数内创建的类的实例的指针。这合适吗?
这是示例代码:
template <typename T>
ImplicatedMembershipFunction<T>*
TriangularMF<T>::minImplicate(const T &constantSet) const
{
static ImplicatedType* resultingSet = new ImplicatedType();
// do something to generate resultingSet...
return resultingSet;
}
我想返回指针,因为需要在容器中有基类的子类。在上面的代码ImplicatedType
中是一个类定义TriangularMF<T>
并派生自ImplicatedMembershipFunction<T>
. 会有各种各样的模板类TriangularMF
,比如有一个从中派生的嵌套类ImplicatedMembershipFunction<T>
,我需要以同样的方式对待它们。例如,在图书馆之外,我可能想做一些类似的事情:
TriangularMF<double> trmf(0,1,2);
TrapesoidalMF<double> trpmf(0,1,3,2); // a class like TriangularMF but
// ImplicatedType is different
ImplicatedMembershipFunction<double>* itrmf = trmf.implicate(0.6);
ImplicatedMembershipFunction<double>* itrpmf = trpmf.implicate(0.6); // same as above.
// use them in the same way:
vector<ImplicatedMembershipFunction<double>*> vec;
vec.push_back(itrmf);
vec.push_back(itrpmf);
我不想使用移动语义等 C++11 特性的原因,或者std::shared_ptr
我不想强迫我的队友在他们的计算机上安装更新版本的 g++。我不能给他们库的编译版本,因为它是大量模板化的。
编辑
该库将被线程化。特别是,TriangularMF<T>::minImplicate
它将同时在多个线程中运行。所以,做minImplicate
一个相互的任务,对性能没有意义。