9

如何更改下面的代码以允许使用模板构造函数创建 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;
}
4

2 回答 2

-3

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

C++ 模板构造函数

底线是它似乎不受支持。目前还不清楚它会实现什么。

于 2013-04-26T18:27:25.870 回答
-4

问题有点模糊。您是否打算用“T a”替换 Base ctor 中的“int a”?如果是这样,您可能想要使用函数模板类型推断,如下所示:

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

// Call site avoids template clutter
auto base = CreateBase(2);
于 2013-04-26T18:29:20.667 回答