Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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++ 如何使用非默认构造函数实例化模板化类 请考虑以下例子: class Generator { public: Generator(int n) : m_n(n) { } int f() { return m_n; } private: int m_n; }; template<class BaseClass> class Transformer : public BaseClass { public: Transformer(int mult, int add) : m_mult(mult) , m_add(add) { } int f() { return BaseClass::f() * m_mult + m_add; } private: int m_add; int m_mult; };_C++_C++11_Templates_Constructor_Variadic Templates - Fatal编程技术网

C++ 如何使用非默认构造函数实例化模板化类 请考虑以下例子: class Generator { public: Generator(int n) : m_n(n) { } int f() { return m_n; } private: int m_n; }; template<class BaseClass> class Transformer : public BaseClass { public: Transformer(int mult, int add) : m_mult(mult) , m_add(add) { } int f() { return BaseClass::f() * m_mult + m_add; } private: int m_add; int m_mult; };

C++ 如何使用非默认构造函数实例化模板化类 请考虑以下例子: class Generator { public: Generator(int n) : m_n(n) { } int f() { return m_n; } private: int m_n; }; template<class BaseClass> class Transformer : public BaseClass { public: Transformer(int mult, int add) : m_mult(mult) , m_add(add) { } int f() { return BaseClass::f() * m_mult + m_add; } private: int m_add; int m_mult; };,c++,c++11,templates,constructor,variadic-templates,C++,C++11,Templates,Constructor,Variadic Templates,接下来,我尝试了模板专门化: template<> Transformer<Generator>::Transformer(int n, int mult, int add) // error C2244: 'Transformer<Generator>::Transformer': unable to match function definition to an existing declaration : Transformer(mult,

接下来,我尝试了模板专门化:

template<> Transformer<Generator>::Transformer(int n, int mult, int add)    // error C2244: 'Transformer<Generator>::Transformer': unable to match function definition to an existing declaration
    : Transformer(mult,add)
    , Generator(n)
{};

Transformer<Generator> t(n,mult,add);
template Transformer::Transformer(int n,int mult,int add)//错误C2244:“Transformer::Transformer”:无法将函数定义与现有声明匹配
:变压器(多个,添加)
,发电机(n)
{};
变压器t(n、mult、add);
如何实例化具有非默认构造函数的模板

有更多的生成器类,它们的构造函数中有不同的参数。现在我想实例化一个类,该类由传递所有必需参数的

在我看来,如果您至少可以使用C++11,那么您需要的是一个可变模板构造函数,其编写如下

template <typename ... As>
Transformer (int mult, int add, As && ... as)
    : BaseClass{std::forward<As>(as)...}, m_mult{mult}, m_add{add}
 { }

对不起,那可能是误会了。我已重新措辞了这个问题。但是,如果有更多的生成器类在其构造函数中具有不同的参数,您会怎么做?@MiB_Coder-我明白了。。。是的,这是一个完全不同的问题;给我几分钟,我重写我的答案,提出一个建议solution@MiB_Coder-修改答案。疑问:你只标注C++;C++11解决方案适合您吗?
template <typename ... As>
Transformer (int mult, int add, As && ... as)
    : BaseClass{std::forward<As>(as)...}, m_mult{mult}, m_add{add}
 { }
template <typename ... As>
TG (int mult, int add, As && ... as)
   : Transformer{mult, add, std::forward<As>(as)...}
 { }