复制模板化派生类中的构造函数

Copy constructor in templated derived class

本文关键字:构造函数 派生 复制      更新时间:2023-10-16

希望这将是一个简单的过程。在为另一个问题制定解决方案时,我遇到了以下问题:

template <class Base>
class Derived : public Base
{
public:
  Derived() {};
  Derived(const Derived& rhs) :
    Base::Base(rhs) { };
};
struct X { };
void test()
{
  Derived<X> d1;
  Derived<X> d2(d1);
}

test.cpp: In instantiation of ‘Derived<Base>::Derived(const   Derived<Base>&) [with Base = X]’:
test.cpp:34:19:   required from here
test.cpp:26:19: error: no type named ‘Base’ in ‘struct X’
         Base::Base(rhs) { };
                   ^

那么,如何为派生模板类编写复制构造函数呢?(在上面的例子中,假设我没有能力更改X,并且它的内容是非平凡的,并且可能会发生变化)

要调用DerivedBase部分的构造函数,只需要

Derived(const Derived& rhs) :
    Base(rhs) { };

CCD_ 3尝试初始化名为CCD_ 5的类型为Base的成员。