类模板和构造函数的用法

时间:2018-08-20 05:45:08

标签: c++ templates

template< class arg >
class Master;
class StageA;
class StageB;

class Slave
    :public Master<Slave>
{
public:
    Slave();

    StageA  start{this};
    StageB  stop{this};
 };

Slave::Slave()
    :Master<Slave>( start ){}

模板概念的新手。我无法理解本文最后一行的用法。有人可以解释一下这里发生了什么吗?

2 个答案:

答案 0 :(得分:2)

除了像其他人在注释中已经声明的那样,您不能转发这样的模板类,并且该代码可能不应该在同一文件中(或者应该内联构造函数的实现),您原来的问题的答案是:

Slave源自MasterMaster是模板类。
因此,所讨论的行中发生的事情是Master类的构造函数以start作为参数被调用。
这是一个奇怪的重复模板模式的示例,其中一个类(Slave)是从另一个类(Master)派生的,并将自身作为模板参数传递。

答案 1 :(得分:1)

  

我无法理解本文最后一行的用法。有人可以解释一下这里发生了什么吗?

此用法不特定于模板。这也称为成员初始化列表,与普通类的构造函数一起使用。 您可以详细了解here

但是,正如其他人指出的那样,您发布的代码至少存在一个重大问题。