2013-09-19 5 views
0

У меня возникла небольшая проблема с наложением шаблона.Ошибка реализации интерфейса интерфейса класса C++

Если я создаю класс интерфейса с помощью шаблона:

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 
} 

Я, кажется, есть проблемы с этим работы в моем компиляторе. Это не законно?

ответ

3
template<typedef Data> 

Неправильная версия.

Вы должны использовать

template<class Data> 

или

template<typename Data> 
+0

да, возгласы меня это имяТипа в моем коде ... не мой .... определение типа во плохой ... длинный день лол –

+0

@LeeJacobs Если добавить недостающее ';' компилирует хорошо со мной : http://ideone.com/8PeBDB. –

+0

говорит, что есть ошибка, когда я нажимаю на ссылку –

1
template <typedef Data> 

неправильно, используйте

template <typename Data> 
0

Пожалуйста, добавьте точку с запятой в конце объявления класса.

template<typename Data> 
class InterfaceClass { 
    private: 
    public: 
     virtual Data* foo() = 0; //some function that returns our template type 
}; 
Смежные вопросы