gpt4 book ai didi

c++ - 在派生类的构造函数中初始化没有默认构造函数的基类

转载 作者:行者123 更新时间:2023-11-28 00:07:43 26 4
gpt4 key购买 nike

我正在尝试创建一个子类 secondary,它可以与参数一起使用,也可以覆盖 primary 类。现在我明白了

no matching function to call

错误。有人可以帮助我吗?

我的代码:
初级.h:

#ifndef PRIMARY_H
#define PRIMARY_H


class primary
{
public:
primary(int x);
virtual ~primary();
protected:
private:
int primary_x;
};

#endif // PRIMARY_H

主要.cpp:

#include "primary.h"

primary::primary(int x)
{
primary_x = x;
}

primary::~primary()
{
//dtor
}

次级.h:

#ifndef SECONDARY_H
#define SECONDARY_H
#include "primary.h"


class secondary : public primary
{
public:
secondary();
virtual ~secondary();
protected:
private:
};

#endif // SECONDARY_H

二级.cpp:

#include "secondary.h"

secondary::secondary()
{
//ctor
}

secondary::~secondary()
{
//dtor
}

最佳答案

因为您没有默认构造函数,编译器提示它无法为 primary 创建对象,您应该向 secondary 构造函数添加一个参数/给它一个默认值:

class secondary : public primary
{
public:
secondary(int x);
virtual ~secondary();
protected:
private:
};

然后调用基类的构造函数:

secondary::secondary(int x) : primary(x)
{
//ctor
}

或者:

secondary::secondary() : primary(5)
{
//ctor
}

或者只为 primary 添加一个默认构造函数:

class primary
{
public:
primary(int x);
primary() : primary_x(0) {}
virtual ~primary();
protected:
private:
int primary_x;
};

关于c++ - 在派生类的构造函数中初始化没有默认构造函数的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567322/

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