継承を含むコードをコンパイルしようとしています。..constructorの呼び出しで一致する関数がありません
#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のデフォルトコンストラクタを作成します。この実装では、親クラスのデフォルトのコンストラクタを呼び出そうとします(デフォルト動作)。 MapEntityClassの値コンストラクタを適切な値で呼び出すために、RectangularEntityClassのデフォルトのコンストラクタを自分で定義したい場合があります – Bettorun
hmm、あなたはrectangularEntityClassのデフォルトのコンストラクタを意味しますか? – nm17
ええ。 MapEntityClassに使用するコンストラクタを指定するために – Bettorun