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 ){}
模板概念的新手。我无法理解本文最后一行的用法。有人可以解释一下这里发生了什么吗?
答案 0 :(得分:2)
除了像其他人在注释中已经声明的那样,您不能转发这样的模板类,并且该代码可能不应该在同一文件中(或者应该内联构造函数的实现),您原来的问题的答案是:
Slave
源自Master
。 Master
是模板类。
因此,所讨论的行中发生的事情是Master
类的构造函数以start
作为参数被调用。
这是一个奇怪的重复模板模式的示例,其中一个类(Slave
)是从另一个类(Master
)派生的,并将自身作为模板参数传递。
答案 1 :(得分:1)
我无法理解本文最后一行的用法。有人可以解释一下这里发生了什么吗?
此用法不特定于模板。这也称为成员初始化列表,与普通类的构造函数一起使用。 您可以详细了解here。
但是,正如其他人指出的那样,您发布的代码至少存在一个重大问题。