我希望有一个非模板类和一个没有参数的模板构造函数。
据我所知,这是不可能的(因为它会与默认构造函数- am right?冲突),变通方法如下:
class A{
template <typename U> A(U* dummy) {
// Do something
}
};
也许有更好的替代方案(或者更好的变通方法)?
发布于 2010-10-18 23:59:42
在调用构造函数模板时,无法显式指定模板参数,因此必须通过参数推导来推导它们。这是因为如果你说:
Foo<int> f = Foo<int>();
<int>
是Foo
类型的模板参数列表,而不是它的构造函数。构造函数模板的参数列表无处可去。
即使使用了变通方法,您仍然必须传递参数才能调用该构造函数模板。完全不清楚你想要达到什么目的。
发布于 2010-10-18 23:54:51
您可以创建一个模板化工厂函数:
class Foo
{
public:
template <class T> static Foo* create() // could also return by value, or a smart pointer
{
return new Foo(...);
}
...
};
发布于 2010-10-18 23:57:33
据我所知,使用
是不可能的(因为它会与默认构造函数冲突--我说的对吗?)
你错了。它不会以任何方式冲突。你就是永远不能把它叫醒。
https://stackoverflow.com/questions/3960849
复制相似问题