Вывести шаблон-класс из нешаблонного базового случая полиморфными методами? - PullRequest
0 голосов
/ 03 июля 2018

в C ++ 11 может ли шаблонный класс получить свои методы из не шаблонного базового класса, имеющего такую ​​же сигнатуру метода? Пример:

void DoSomething() {return;}

class MyBase {
public:
    MyBase() {};
    virtual void Draw() {DoSomething();};
    virtual void Draw2() = 0;
}

template<int T>
class MyShape1<T> : public MyBase {
public:
    MyShape1() : MyBase() {}
    void Draw2();
};

class MySpape2() : public MyBase() {
    MyShape2() : MyBase() {}
    void Draw2();
};

template<int T>
void MyShape1<T>::MyDraw2() {
    DoSomething();
}

void MyShape2::MyDraw2() {
    DoSomething();
}

int main(int argn, char** argv) {
    MyShape1<5> X();
    MyShape2    Y();

    X.Draw();
    Y.Draw();

    MyBase* Z;

    Z = &X;
    Z->Draw2();

    Z = &Y;
    Z->Draw2();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...