Конечно, вы можете
class Pawn {
public:
virtual char const* imageFileName() = 0;
};
Извините, в прошлый раз я скупился на объяснение и выглядело так, как будто не было лишних классов, действительно должно быть:
class WhitePawn : public Pawn {
public:
virtual char const* imageFileName();
};
Затем переопределите (+ объявление):
char const* WhitePawn::imageFileName() { return "./whitepawn.png"; }
char const* BlackPawn::imageFilename() { return "./blackpawn.png"; }
и позвоните imageFilename()
из paintEvent()
:
void Pawn::paintEvent(QPaintEvent *)
{
pixmap.load(imageFilename());
QPainter paint(this);
paint.drawPixmap(x, y, pixmap);
}
Но мне лично нравится идея Керрека сделать этопеременная.Вы даже можете сделать это без дополнительных занятий:
class Pawn {
public:
Pawn(char const *filename) : filename(filename) { }
private:
char const *filname;
};
Pawn whitePawn("./whitepawn.png");