C ++模板构造函数

我希望有一个带有模板构造函数且没有参数的非模板类。


据我了解,这是不可能的(因为它会与默认构造函数发生冲突- 是吗?),解决方法如下:


class A{

   template <typename U> A(U* dummy) {

   // Do something

   }

};

也许对此有更好的选择(或更好的解决方法)?




湖上湖
浏览 420回答 3
3回答

慕婉清6462132

在调用构造函数模板时,无法显式指定模板参数,因此必须通过参数推导来推导它们。这是因为如果您说:Foo<int> f = Foo<int>();的<int>是该类型的模板参数列表Foo,而不是它的构造函数。构造函数模板的参数列表无处可去。即使有解决方法,您仍然必须传递参数才能调用该构造函数模板。尚不清楚您要实现的目标。

慕田峪9158850

您可以创建模板化工厂函数:class Foo{public:&nbsp; &nbsp; template <class T> static Foo* create() // could also return by value, or a smart pointer&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return new Foo(...);&nbsp; &nbsp; }...&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;};
打开App,查看更多内容
随时随地看视频慕课网APP