Шаблон и Виртуальные функции в C ++? позволил ? - PullRequest
1 голос
/ 27 августа 2011

Я читал в Интернете, что виртуальные функции шаблона не разрешены, это правда? Это немного странно, так как этот код прекрасно компилируется на моем Eclipse g ++

template <class T>
class A {

public:
    virtual ~A<T>() { }
    virtual void printMe() {cout << "I am A class" << endl;}
};

template <class T>
class B: public A<T> {

public:
    void printMe() {cout << "I am B class" << endl;}
};

int main() {

    A<int> * ptr = new B<int>;
    ptr->printMe();
    delete ptr;
    return 0;
}

С уважением, Ронен

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

виртуальные методы в типе шаблона (как видно из вашего примера) действительны.

ограничение, на которое вы ссылаетесь, принимает следующую форму:

class type {
  //...
  template <typename T> virtual void r() const;
};
0 голосов
/ 27 августа 2011

Здесь у вас есть не виртуальная функция шаблона, а класс шаблона, содержащий обычную виртуальную функцию.

Как вы обнаружили, это прекрасно.

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