Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 抽象类接口可以模板化吗_C++_Templates_C++14 - Fatal编程技术网

C++ 抽象类接口可以模板化吗

C++ 抽象类接口可以模板化吗,c++,templates,c++14,C++,Templates,C++14,抽象类接口可以模板化吗 我们可以在派生类中使用模板来填充参数吗? 如何为这些类型的需求定义接口参数 class iconfigurator { public: iconfigurator(); virtual ~iconfigurator(); //EXpect the std::vector<class entry>& entries to be Template type.

抽象类接口可以模板化吗 我们可以在派生类中使用模板来填充参数吗? 如何为这些类型的需求定义接口参数

  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;
    }
类iconfigurator
{
公众:
i配置器();
虚拟~iconfigurator();
//std::vector&条目应为模板类型。
虚拟布尔配置(const std::string和configName,std::vector和entries)const=0;
};
类derivedconfigurator:公共iconfigurator
{        
公众:
derivedconfigurator();
virtual~derivedconfigulator();
虚拟布尔配置(const std::string和configName,std::vector和entries)const=0;
}
类derivedconfigurator2:公共iconfigurator
{    
公众:
derivedconfigurator2();
虚拟~derivedconfigurator2();
虚拟布尔配置(const std::string和configName,std::maps和entries)const=0;
}

模板只是编写N个函数或类的快捷方式

template <typename T> class MyClass {}
MyClass<int> mc1 {};
MyClass<int> mc2 {};

模板只是编写N个函数或类的快捷方式

template <typename T> class MyClass {}
MyClass<int> mc1 {};
MyClass<int> mc2 {};

在您的示例中,
类型是什么?
在这个类中,您想在哪里使用模板参数?不清楚您试图实现什么。我已经编辑了代码。如果您询问是否可以执行
模板类iconfigurator{…}
,那么您可以-但是请注意,
iconfigurator
iconfigurator
是不同的不相关类;比如说,你将无法拥有std::vector,并以统一和多态的方式对待它们。如果您询问是否可以执行
模板虚拟bool配置(…)则不可以。没有虚拟函数模板这种东西。@IgorTandetnik听起来像是一个答案!在您的示例中,
类型是什么?
在这个类中,您想在哪里使用模板参数?不清楚您试图实现什么。我已经编辑了代码。如果您询问是否可以执行
模板类iconfigurator{…}
,那么您可以-但是请注意,
iconfigurator
iconfigurator
是不同的不相关类;比如说,你将无法拥有std::vector,并以统一和多态的方式对待它们。如果您询问是否可以执行
模板虚拟bool配置(…)则不可以。没有虚拟函数模板这种东西。@IgorTandetnik听起来像是一个答案!