我有一个使用模板的类层次结构:
template <typename T>
class BaseClass
{
public:
BaseClass(const std::string& inputName)
:
myMember(std::make_shared<T>(inputName))
{}
private:
const std::shared_ptr<T> myMember;
};
class UsedByDerived
{
public:
UsedByDerived(const std::string& inputName)
:
myInputName(inputName)
{}
private:
const std::string myInputName;
};
class DerivedClass : public BaseClass<UsedByDerived>
{
public:
DerivedClass()
:
BaseClass<UsedByDerived>("X")
{}
};
我有多个这样的派生类(每个类都有不同的构造函数签名),我想做一个抽象工厂来处理实例化。基础工厂是
template <typename T>
class BaseFactory
{
public:
virtual std::shared_ptr<BaseClass<T>> createProduct() = 0;
};
我想知道派生工厂类应该是什么样子(或者这是否行不通?),但是尚不清楚应如何实现它……:
class DerivedFactory
{
public:
std::shared_ptr<BaseClass</* what should this be? */>> createProduct()
{
// what should this return?
}
};
can