我希望有一个带有模板构造函数且没有参数的非模板类。据我了解,这是不可能的(因为它会与默认构造函数发生冲突- 是吗?),解决方法如下:class A{ template <typename U> A(U* dummy) { // Do something }};也许对此有更好的选择(或更好的解决方法)?
3 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
在调用构造函数模板时,无法显式指定模板参数,因此必须通过参数推导来推导它们。这是因为如果您说:
Foo<int> f = Foo<int>();
的<int>是该类型的模板参数列表Foo,而不是它的构造函数。构造函数模板的参数列表无处可去。
即使有解决方法,您仍然必须传递参数才能调用该构造函数模板。尚不清楚您要实现的目标。
慕田峪9158850
TA贡献1794条经验 获得超7个赞
您可以创建模板化工厂函数:
class Foo
{
public:
template <class T> static Foo* create() // could also return by value, or a smart pointer
{
return new Foo(...);
}
...
};
- 3 回答
- 0 关注
- 419 浏览
添加回答
举报
0/150
提交
取消