复制模板化派生类中的构造函数
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,并且它的内容是非平凡的,并且可能会发生变化)
要调用Derived
的Base
部分的构造函数,只需要
Derived(const Derived& rhs) :
Base(rhs) { };
CCD_ 3尝试初始化名为CCD_ 5的类型为Base
的成员。
相关文章:
- 如何委托派生类使用其父构造函数?
- 如果基类包含双指针成员,则派生类的构造函数
- C++:为什么无法在派生类中访问受保护的构造函数?
- C++派生的类构造函数
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 在没有默认构造函数的情况下创建的派生对象
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 如何在派生构造函数中多次构造基类
- C++(控制台)构造函数和派生类
- 为什么为派生类定义复制构造函数需要定义基类的默认构造函数?
- 在dynamic_pointer_cast后调用派生类的构造函数
- 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- 将派生类的构造函数声明为父类的友元
- 如何为具有私有成员的派生类实现移动构造函数
- 使用回调函数从构造函数调用虚拟/派生方法的替代方法?
- 在派生自线程类的构造函数中传递字符串
- C++ 为什么要将对基类的引用传递给派生类的构造函数
- C++将派生类的const值传递给基意外行为的构造函数
- 在模板派生类中继承具有类型别名的构造函数
- 正在调用基方法,而不是从构造函数派生方法