Есть родитель (закрыт для публичного использования):
class BaseElement {
protected:
unsigned _guid, _size;
char *_data;
bool _swap;
BaseElement(): _guid(0), _size(0), _data(nullptr), _swap(false) {}
public:
virtual bool Get(char *data, unsigned size);
//... other stuff
};
И потомок:
class SimpleBlock : public BaseElement {
unsigned char _track, _flags;
short _crpts;
public:
SimpleBlock(): _track(0), _flags(0), _crpts(0) { _guid = 0xA3; }
bool Get(char *data, unsigned size) override;
//... other stuff
};
Метод Get у потомка делает то же самое, за исключением того, что сместит указатель data на 4 байта вперёд и возьмёт из них значения для своих приватных переменных. Дублировать код Get родителя в потомке из-за 4 строчек как-то не красиво.
При указанных выше определениях класса можно ли в реализации Get у потомка вызвать тот же метод родителя и просто дописать операции с _data?
Надо просто указать класс, функцию которого вы хотите вызывать. Например:
bool Get(char *data, unsigned size) override
{
....
return BaseElement::Get(data,size);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей