繁体   English   中英

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

[英]Copy constructor in templated derived class

希望这会很容易。 在解决另一个问题的解决方案时,我遇到了以下问题:

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) { };

Base::Base尝试初始化类型的成员Base命名Base

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM