gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:46:20 28 4
gpt4 key购买 nike

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

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 的成员。

关于c++ - 在模板派生类中复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33374381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com