Konstruktor klasy pochodnej

0

Otóż mam taki kod:

#pragma once

#include "Sprite.hpp"
#include "Bitmap.hpp"

class TileSprite : public Sprite
{
	
	public:
		
		int x;
		int y;
		int index;
		
		LPCTSTR BlockName;
		int BitmapID;
		int BlockType;
		int FramesCount;
		int Pass;
		
		TileSprite(Bitmap* pBitmap);
		
		void translate(int, int);
		void animate();
		
		virtual SPRITEACTION Update() override
		{
			
			jakieś instrukcje
			
		}
	
};

void TileSprite::animate()
{
	
	jakieś instrukcje
	
}

TileSprite::TileSprite(Bitmap* pBitmap)
{
	
	jakieś instrukcje
	
}

void TileSprite::translate(int tx, int ty)
{
	
	jakieś instrukcje
	
}

Jak widzicie klasa TileSprite jest pochodna od Sprite. Mam kłopot ze skonstruowaniem jej konstruktora. Kompilator wypluwa to:

C:\Users\Lenovo\Desktop\MojeProgamy\k\C++\inne\gry\block\tile_sprite.hpp	In constructor 'TileSprite::TileSprite(Bitmap*)':
44	39	C:\Users\Lenovo\Desktop\MojeProgamy\k\C++\inne\gry\block\tile_sprite.hpp	[Error] no matching function for call to 'Sprite::Sprite()'
44	39	C:\Users\Lenovo\Desktop\MojeProgamy\k\C++\inne\gry\block\tile_sprite.hpp	[Note] candidates are:
i tutaj długa lista kandydatów...
2

Musisz użyć istniejącego konstruktora klasy bazowej.

3
kq napisał(a):

Musisz użyć istniejącego konstruktora klasy bazowej.

Najprawdopodobniej ma to wyglądać tak:

TileSprite::TileSprite(Bitmap* pBitmap)
    : Sprite(pBitmap)
{
    // jakieś instrukcje
}
0

OK, teraz działa, a wyjaśnisz co zmienia ta linijka. Szukałem w internecie, jest dużo tutoriali o dziedziczeniu klas, ale nie ma żadnego o konstruktorze klasy pochodnej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1