Наследование от шаблонного класса
От: R1K0 Россия  
Дата: 24.09.15 20:19
Оценка:
Всем привет. Вот никак не могу понять ошибки. Есть 2 класса:

template <typename ValueType_T>
struct IStateSaver
{
    virtual void Save() = 0;
    virtual ValueType_T Load() const = 0;
};

template <typename ValueType_T>
class DBSaver : public IStateSaver<ValueType_T>  // <-- Вот тут ошибка C2143
{
    public:
        DBSaver(const std::string & connectionString_);
        virtual ~DBSaver();

        virtual void Save();
        virtual ValueType_T Load() const;
};


Подскажите, пожалуйства, а то мозг уже на грани взрыва.
Re: Наследование от шаблонного класса
От: Went  
Дата: 24.09.15 20:45
Оценка:
Здравствуйте, R1K0, Вы писали:
RK>Подскажите, пожалуйства, а то мозг уже на грани взрыва.
У меня работает нормально, но вот тут говорят про то, что забыли template.
Re[2]: Наследование от шаблонного класса
От: Vamp Россия  
Дата: 24.09.15 20:59
Оценка:
W>У меня работает нормально, но вот тут говорят про то, что забыли template.
Не тот случай. Думаю, ТС переупростил задачу.
Да здравствует мыло душистое и веревка пушистая.
Re: Наследование от шаблонного класса
От: ArtDenis Россия  
Дата: 25.09.15 03:54
Оценка: +1
Здравствуйте, R1K0, Вы писали:

RK>Всем привет. Вот никак не могу понять ошибки. Есть 2 класса:


Нужны версия компилятора и минимальный пример, который воспроизводит ошибку
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Наследование от шаблонного класса
От: R1K0 Россия  
Дата: 25.09.15 05:53
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, R1K0, Вы писали:


RK>>Всем привет. Вот никак не могу понять ошибки. Есть 2 класса:


AD>Нужны версия компилятора и минимальный пример, который воспроизводит ошибку


Да пример уже и есть — это ж ошибка компиляции. Все происходит в MS C++ 2008.
PS. Про слово template читал в мсдн, но не спасает — вызывает иную ошибку — что оно там лишнее.
Re: Наследование от шаблонного класса
От: R1K0 Россия  
Дата: 25.09.15 06:26
Оценка:
Дополнительно. Полная ошибка выглядит следующим образом

error C2143: syntax error : missing ',' before '<'
1> dbsaver.h(15) : see reference to class template instantiation 'DBSaver<ValueType_T>' being compiled

Ну и IStateSaver и DBSaver находятся в разных файлах.
Re[2]: Наследование от шаблонного класса
От: night beast СССР  
Дата: 25.09.15 06:55
Оценка: +1 :)
Здравствуйте, R1K0, Вы писали:

RK>Дополнительно. Полная ошибка выглядит следующим образом


RK> error C2143: syntax error : missing ',' before '<'

1>> dbsaver.h(15) : see reference to class template instantiation 'DBSaver<ValueType_T>' being compiled

RK>Ну и IStateSaver и DBSaver находятся в разных файлах.


глупый вопрос: а файл с DBSaver как нибудь инклудник с IStateSaver подключает?
Re[2]: Наследование от шаблонного класса
От: enji  
Дата: 02.10.15 06:18
Оценка:
Здравствуйте, Went, Вы писали:

W>У меня работает нормально, но вот тут говорят про то, что забыли template.


template / typename нужны, если использовать тип, принадлежащий шаблонному параметру

template<class T> void f() {
  T::template Some<int> x;
  T::typename Other y;
}


У ТС-а такого нет...
Re: Наследование от шаблонного класса
От: OlegMax  
Дата: 09.10.15 08:08
Оценка:
Здравствуйте, R1K0, Вы писали:

RK>class DBSaver : public IStateSaver<ValueType_T> // <-- Вот тут ошибка C2143


У меня такая ошибка только если IStateSaver не объявлен. Проверяйте инклюды, нэймспейсы и т.д. Сделайте preprocessed file для начала.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.