当前位置: 首页 > 知识库问答 >
问题:

没有用于初始化的匹配构造函数

马淇
2023-03-14

我只是想习惯基本的复制构造函数

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

但是当我试图编译时,我不断地得到错误“没有匹配的构造函数来初始化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;
}

共有1个答案

万俟旭
2023-03-14

通过声明B(int)B(const B

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

B(){}

在C 11中,这工作得很好:

B() = default;

这将允许B在声明b1时使用默认构造函数

同样的事情也适用于A。您有一个复制构造函数,因此不再隐式地为您放置任何默认构造函数。

 类似资料:
  • 我知道这个问题以前有人问过,但请哼我一声。我很难掌握如何初始化一个类。 这是有问题的代码。 我感兴趣的错误是: 我做了建议的更改,现在我得到一个不同的错误:

  • 问题内容: import React, { Component } from ‘react’; 通常我看到的是,如果他使用es6类,人们会在构造函数中执行this.state。如果不是,他可能会使用getinitialstatestate函数放置状态。但是上面的代码(是的,这是一个有效的代码),两者都没有使用。我有2个问题,这里的状态是什么?那是局部变量吗?如果是,为什么没有?prevState来

  • 当旋转手机或更改为深色模式(当我的活动重新创建时)时,用户将面临无法找到片段构造函数等问题。 无法启动活动组件信息{e.Quran.Qaz/e.Quran.Qaz.ui.Zhuz.QuranByPage}:androidx。碎片应用程序。片段$InstantiationException:无法实例化片段e.Quran。Qaz。用户界面。朱。PageFragment:找不到片段构造函数 在我的项目中

  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添