Извлечение шаблонного класса из не шаблонной базы - PullRequest
4 голосов
/ 27 июня 2019

Я пытаюсь получить Derived производный от Base:

class Base
{
public:
    Base() {};
};

template <class T>
class Derived : public Base
{
public:
    Derived::Derived()
    {

    }
};

Это дает мне следующую ошибку:

ошибка C3254: 'Derived': класс содержит явноепереопределяет '{ctor}', но не является производным от интерфейса, который содержит объявление функции

примечание: см. ссылку на создание экземпляра шаблона класса 'Derived' при компиляции

ошибка C3244: 'Derived ::Derived (void) ': этот метод был введен' Unknown> ', а не' Base '

Я совершенно новичок в шаблонах, какие простые шаги я пропускаю?Это кажется довольно простой вещью.

1 Ответ

6 голосов
/ 27 июня 2019

Вам необходимо пропустить префикс «Derived ::».Вы будете использовать его только для ссылки на символ, который был унаследован или введен в пространство имен класса Derived.Таким образом, единственный префикс, который имеет смысл, это «Base ::» здесь.Это не имеет ничего общего с шаблонами.

class Base
{
public:
    Base() {};
};

template <class T>
class Derived : public Base
{
public:
    Derived() {}
};

См. Рабочий Live Demo .

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