gpt4 book ai didi

c++ - 没有匹配的初始化构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:09 26 4
gpt4 key购买 nike

我只是应该习惯基本的复制构造函数。

我假设我正确放置了复制构造函数。

但是当我尝试编译时,我不断收到错误“没有匹配的 B 初始化构造函数”

我有点困惑。

class A {
int valuea;

public:
A(const A&); // copy constructor
int getValuea() const { return valuea; }
void setValuea(int x) { valuea = x; }
};

class B : public A {
int valueb;
public:
B(int valueb);
B(const B&); // copy constructor
int getValueb() const { return valueb; }
void setValueb(int x) { valueb = x; }
};

int main () {
B b1;
b1.setValuea(5);
b1.setValueb(10);
B b2(b1);
cout << "b2.valuea=" << b2.getValuea() << "b2.valueb=" << b2.getValueb() << endl;

return 0;
}

最佳答案

通过声明 B(int)B(const B &),当您没有其他构造函数,因为就编译器所知,您可能不想要默认构造函数,因此它无法做出假设(see here)。

将以下内容添加到B,记得用它初始化基类和成员:

B(){}

在 C++11 中,这很有效:

B() = default;

这将允许 B 在您声明 B b1;

时使用默认构造函数

A 也是如此。您有一个复制构造函数,因此不再有任何默认构造函数为您隐式放置。

关于c++ - 没有匹配的初始化构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925458/

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