我可以在C ++中为模板类编写接口吗?

时间:2010-08-10 07:22:15

标签: c++ g++ polymorphism

我有一个接口和一些存储序列化对象的类的实现。我想将实现类转换为模板类,以便我可以将它们与多种类型的对象一起使用,但是我遇到了编译器错误。

#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;
}

我在“class Implementation ...”行中收到“错误:'{'token'之前的预期class-name。

感谢。

1 个答案:

答案 0 :(得分:9)

template<typename T>
class Implementation : public Interface<T> {
//                                     ^^^