为了账号安全,请及时绑定邮箱和手机立即绑定

C ++模板构造函数

C ++模板构造函数

C++
湖上湖 2019-12-11 15:09:10
我希望有一个带有模板构造函数且没有参数的非模板类。据我了解,这是不可能的(因为它会与默认构造函数发生冲突- 是吗?),解决方法如下:class A{   template <typename U> A(U* dummy) {   // Do something   }};也许对此有更好的选择(或更好的解决方法)?
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

在调用构造函数模板时,无法显式指定模板参数,因此必须通过参数推导来推导它们。这是因为如果您说:


Foo<int> f = Foo<int>();

的<int>是该类型的模板参数列表Foo,而不是它的构造函数。构造函数模板的参数列表无处可去。


即使有解决方法,您仍然必须传递参数才能调用该构造函数模板。尚不清楚您要实现的目标。



查看完整回答
反对 回复 2019-12-12
?
慕田峪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(...);

    }

...        

};



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 401 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信