В поисках обходного пути для виртуальных функций с шаблонами - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать в базовом классе функцию-получатель, которая возвращает значение, существующее только в производном классе.

Вот пример того, чего я пытаюсь достичь:

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();
}

Приведенный выше код не компилируется, невозможно виртуализировать виртуальную функцию.

Кто-нибудь знает способ обойти это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...