2
作为一种工厂方法设置,我希望注册函子,每个函子都创建不同类型的对象,但满足一个通用接口 - 即所有创建子类为核心类的创建对象。具有不同模板参数的模板对象的集合
说我有这样的:
template <class T> struct FactoryMethod
{
X* create();
}
我不能有(IIRC)std::map<std::string,FactoryMethod*>
因为每个FactoryMethod
模板专业化是一个独立的类型。但我可以做到:
struct IFactoryMethod
{
virtual X* create()=0;
};
template <class T> struct FactoryMethod : public IFactoryMethod
{
virtual X* create();
};
std::map<std::string,IFactoryMethod*> factories;
,对吗?我不知道标准STL有办法使这个整洁,但我猜是提升 - 但是我们现在不使用提升,我仍然有兴趣。
然后想法是factories
可以根据类型名称(例如从XML读取)来查找以创建正确的类型。
它是伪代码,给我一个休息!虽然你能澄清“所有权执行指针”吗? – 2011-01-20 22:25:43