gpt4 book ai didi

c++ - 没有匹配函数来调用 ..constructor

转载 作者:行者123 更新时间:2023-11-28 05:43:29 25 4
gpt4 key购买 nike

我正在尝试编译涉及继承的代码。

#include "MapEntityClass.h"

class RectangularEntityClass:public MapEntityClass
{
public:
void drawOnMap(MapClass *mapObj) const;

protected:
};

父类是MapEntityClass,没有默认构造函数,但是有值构造函数。编译时出现以下错误:

RectangularEntityClass.h: In constructor ‘RectangularEntityClass::RectangularEntityClass()’:
RectangularEntityClass.h:12:7: error: no matching function for call to ‘MapEntityClass::MapEntityClass()’
class RectangularEntityClass:public MapEntityClass
^
RectangularEntityClass.h:12:7: note: candidates are:
In file included from main.cpp:1:0:
MapEntityClass.h:32:5: note: MapEntityClass::MapEntityClass(const PixelLocationClass&, const ColorClass&)
MapEntityClass(
^
MapEntityClass.h:32:5: note: candidate expects 2 arguments, 0 provided

知道哪里出了问题吗?

最佳答案

在继承中,只有当父类没有构造函数或者只有默认构造函数时,子类才不需要构造函数。

无论如何,如果父类碰巧有一个参数化构造函数,子类应该有一个参数化构造函数,它应该调用父类构造函数。

例子:

class A {
int aVal;
public:
A(int);
};

A::A(int aVal)
{
this->aVal = aVal;
}

class B : public A {
int bVal;
public:
B(int, int)
};

B::B(int aVal, int bVal) : A(aVal)
{
this->bVal = bVal;
}

关于c++ - 没有匹配函数来调用 ..constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672027/

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