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