Templates 类模板和构造函数

Templates 类模板和构造函数,templates,constructor,d,Templates,Constructor,D,模板是向类添加一些特性的好方法,但构造函数有一个问题:它只在模板构造函数和类(作为参数传递)构造函数具有默认形式时才起作用。() 是否可以在cSource2中调用cSource2 ctor,并使用以下内容2? 如果没有,是否有测试类是否具有默认构造函数的特性?您可以构建一系列super调用,转发构造函数参数: 在cimplementsomestuff中: this(A ...)(A args) // formerly this() { super(args); // etc ..

模板是向类添加一些特性的好方法,但构造函数有一个问题:它只在模板构造函数和类(作为参数传递)构造函数具有默认形式时才起作用。()

是否可以在cSource2中调用cSource2 ctor,并使用以下内容2?
如果没有,是否有测试类是否具有默认构造函数的特性?

您可以构建一系列
super
调用,转发构造函数参数:

cimplementsomestuff
中:

this(A ...)(A args) // formerly this()
{
    super(args);
    // etc ...
c包含某些内容的资源2

this(int a) // could be this(A ...)(args), too
{
    super(a);
    // etc ...

当类像这样继承
类C:Base{}
或像这样模板化
类C(Base):Base{}
时,如果不这样做,则在
类上调用默认构造函数

要调用其他默认构造函数,请在派生构造函数中包括super调用,如:

class C:Base{super(myArguemnts);您的代码}

类C(Base):Base{super(myArguemnts);您的代码}
这可能会变得更棘手,因为您不知道将是什么类型的Base,因此您可能不知道它将接受什么类型的参数(如果有)

如果需要,您可以像这样转发任意扩充


this(Args…)。必须测试是否存在默认的ctor。
this(int a) // could be this(A ...)(args), too
{
    super(a);
    // etc ...