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

В ООП я новичок. Дошел до наследования. Допустим, есть у меня класс 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;
}

Ответы (0 шт):