Я пытаюсь создать в базовом классе функцию-получатель, которая возвращает значение, существующее только в производном классе.
Вот пример того, чего я пытаюсь достичь:
class Base
{
template<typename T>
virtual T GetData();
};
class Derived_Int : public Base
{
int data_;
int GetData() override { return data_ }
};
class Derived_Float : public Base
{
float data_;
float GetData() override { return data_ }
};
int main()
{
Derived_Int A;
Derived_Float B;
std::vector<Base*> vec { &A, &B };
// Somehow get this to work
vec[0]->GetData();
vec[1]->GetData();
}
Приведенный выше код не компилируется, невозможно виртуализировать виртуальную функцию.
Кто-нибудь знает способ обойти это?