希望这将是一个简单的。在处理不同问题的解决方案时,我遇到了以下问题:
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并且其内容非常重要且可能会发生变化)
答案 0 :(得分:4)
要调用Base
的{{1}}部分的构造函数,只需要
Derived
Derived(const Derived& rhs) :
Base(rhs) { };
尝试初始化名为Base::Base
的{{1}}类型的成员。