Могу ли я написать интерфейс для шаблона класса в C ++ - PullRequest
1 голос
/ 10 августа 2010

У меня есть интерфейс и пара реализаций класса, который хранит сериализованные объекты. Я хотел бы превратить классы реализации в классы шаблонов, чтобы я мог использовать их с несколькими типами объектов, но я получаю ошибки компилятора.

#include <iostream>
template<typename T>
class Interface{
public:
    virtual void func(T& c) = 0;
};

class Container{
public:
    Container() : dummy(10){}
    int dummy;
};


template<typename T>
class Implementation : public Interface{
public:
    void func(T& c){
        std::cout << "++c.dummy " << ++c.dummy << std::endl;
    }
};

int main(){
    Container c;
    Implementation<Container> i;
    i.func(c);
    return 0;
}

Я получаю сообщение "ошибка: ожидаемое имя класса перед маркером‘ {’" в строке "Реализация класса ...".

Спасибо.

1 Ответ

9 голосов
/ 10 августа 2010
template<typename T>
class Implementation : public Interface<T> {
//                                     ^^^
...