Проблема с виртуальными методами

185
21 апреля 2022, 21:20

В ООП я новичок. Дошел до наследования. Допустим, есть у меня класс Base. От него наследуются два класса: EXT1, который хранит целочисленную переменную; EXT2, который хранит массив из трёх вещественных чисел. И у меня есть для классов EXT1 и EXT2 геттеры. Понятно, что возвращать они будут данные разных типов. Поэтому у меня не получается для них создать виртуальную функцию в классе Base. Суть вопроса: как реализовать виртуальную функцию в классе Base, чтобы я мог создать указатель типа Base, присвоить ему объект типа EXT1 или EXT2, и вызвать геттер? Заранее спасибо. Код:

#include <iostream>
using namespace std;
class Base {
};
class EXT1:public Base {
public:
    EXT1(int a) {
        data = a;
    }
    int data;
    int GetData() {
        return data;
    }
};
class EXT2 :public Base {
public:
    EXT2(float* arr) {
        for (int i = 0; i < 3; i++) {
            data[i] = arr[i];
        }
    }
    float data[3];
    float* GetData() {
        return data;
    }
};
int main() {
    EXT1 ext1(3);
    Base* base;
    base = &ext1;
    cout << base->GetData() << endl;
    float arr[3] = { 1,2,3 };
    EXT2 ext2(arr);
    base = &ext2;
    cout << base->GetData() << endl;
    
    return 0;
}
READ ALSO
Как можно сгенерировать случайную позицию для опорного элемента быстрой сортировки не используя функцию rand?

Как можно сгенерировать случайную позицию для опорного элемента быстрой сортировки не используя функцию rand?

Как можно сгенерировать случайную позицию для опорного элемента быстрой сортировки не используя функцию rand? Другие стратегии выбора не подходят...

187
Движение игрока SFML

Движение игрока SFML

При движении описанном в таком коде, игрок движется угловато: либо влево, либо вверх, либо вправо, либо вниз, ли по диагонали под углом 45 градусов...

90
За какую ассимптотику работает std::stoi?

За какую ассимптотику работает std::stoi?

В связи с решением одной задачи, в которой я из - за std::stoi получила TL, мне стало интересно - за сколько эта функция работает (в плане ассимптотики)Хотя...

90
Музыка в консоли на С++

Музыка в консоли на С++

Возник вопрос - Как запустить mp3-трек в консоли? Погуглил и все ответы были на тему "установить какие-то библиотеки и они будут на фоне подгружать...

87