【发布时间】:2016-08-08 21:29:06
【问题描述】:
我正在尝试编译涉及继承的代码。
#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
知道有什么问题吗?
【问题讨论】:
-
由于类现在是这样,编译器创建了 RectangularEntityClass 的默认构造函数。在该实现中,它尝试调用其父类的默认构造函数(默认行为)。您可能想自己定义 RectangularEntityClass 的默认构造函数,以便使用适当的值调用 MapEntityClass 的值构造函数
-
嗯,你是说rectangleEntityClass的默认构造函数?
-
是的。为了指定 MapEntityClass 使用哪个构造函数
标签: c++ inheritance