C ++如何调用模板化构造函数

时间:2013-04-26 18:23:13

标签: c++ templates constructor

如何更改以下代码以允许创建Base对象 使用模板化构造函数?

struct Base {
template <typename T>
Base(int a) {}
};

 int main(int argc, char const *argv[])
{
    Base *b = new Base<char>(2);
    delete b;
    return 0;
}

2 个答案:

答案 0 :(得分:-1)

这个主题似乎回答了你的问题:

C++ template constructor

底线是它似乎不受支持;并且不清楚它会实现什么。

答案 1 :(得分:-1)

问题有点模糊。你的意图是替换&#34; int a&#34;在基础上与&#34; T a&#34;?如果是这样,您可能希望使用函数模板类型推断,如下所示:

template<typename T>
Base<T> CreateBase(T a)
{
  return new Base<T>(a);
}

// Call site avoids template clutter
auto base = CreateBase(2);