【发布时间】:2019-08-01 22:50:43
【问题描述】:
抽象类接口可以模板化吗 我们可以在派生类中使用模板来填充参数吗? 如何为这些类型的需求定义接口参数
class iconfigurator
{
public:
iconfigurator();
virtual ~iconfigurator();
//EXpect the std::vector<class entry>& entries to be Template type.
virtual bool config(const std::string& configName,std::vector<class entry>& entries) const = 0;
};
class derivedconfigurator : public iconfigurator
{
public:
derivedconfigurator();
virtual ~derivedconfigurator();
virtual bool config(const std::string& configName,std::vector<class another_entry_type>& entries) const = 0;
}
class derivedconfigurator2 : public iconfigurator
{
public:
derivedconfigurator2();
virtual ~derivedconfigurator2();
virtual bool config(const std::string& configName,std::maps<key, value>& entries) const = 0;
}
【问题讨论】:
-
您的示例中的
Types是什么? -
你想在这个类的什么地方使用模板参数?目前尚不清楚您要达到的目标。
-
我已经编辑了代码。
-
如果你问是否可以做
template <typename Types> class iconfigurator {...};,那么可以——但要注意iconfigurator<SomeType>和iconfigurator<SomeOtherType>是截然不同的不相关的类;例如,您将无法拥有std::vector<iconfigurator*>并以统一和多态的方式对待它们。如果你问你是否可以做template <typename Types> virtual bool config(...);那么不,你不能。没有虚函数模板之类的东西。 -
@IgorTandetnik 听起来像是一个答案!