我在模板继承方面遇到了一个小问题。
如果我使用模板创建接口类:
template<typename Data>
class InterfaceClass {
private:
public:
virtual Data* foo() = 0; //some function that returns our template type
}
然后我创建了一个这样的实现:
template<typename MoData>
class Implementation : public InterfaceClass<MoData> {
private:
public:
MoData* foo() { MoData* ptr = NULL; return ptr; } //some implementation
}
我似乎在编译器中遇到了麻烦。这不合法吗?
答案 0 :(得分:3)
template<typedef Data>
不正确。
你应该使用
template<class Data>
或
template<typename Data>
答案 1 :(得分:1)
template <typedef Data>
错误,请使用
template <typename Data>
答案 2 :(得分:0)
请在课程声明结束时添加分号。
template<typename Data>
class InterfaceClass {
private:
public:
virtual Data* foo() = 0; //some function that returns our template type
};