Меня попросили переключить три класса для университетского задания на шаблоны, чтобы сделать их более общими, но у меня возникают проблемы при попытке вернуть указатель на объект из функции шаблона.
Компилятор: версия GCC - 3.4.4 (Cygwin)
Вот (.h):
namespace node_class
{
template <class Item>
class node
{
public:
// CONSTRUCTOR
node(const Item& initial_data = 0, node* initial_link = NULL);
~node(){}
// MUTATING MEMBER FUNCTIONS
void set_data(const Item& new_data);
void set_link(node* new_link);
// NON-MUTATING MEMBER FUNCTIONS
const node* link(void) const;
node* link(void);
const Item& data(void) const;
Item& data(void);
private:
Item data_field;
node* next_field;
};
}
Вот две реализации функции для возврата указателя на объект:
template<class Item>
const node<Item>::node* node<Item>::link(void) const
{
return(next_field);
}
template<class Item>
node<Item>::node* node<Item>::link(void)
{
return(next_field);
}
Вот ошибки, которые я продолжаю выдавать при попытке компиляции:
$ g++ -Wall node.h
node.h:73: error: expected init-declarator before '*' token
node.h:73: error: expected ';' before '*' token
node.h:79: error: expected constructor, destructor, or type conversion before '*' token
node.h:79: error: expected ';' before '*' token
На данный момент у меня есть отдельные (.h) и (.template) с существованием .template.включается директивой include в заголовочный файл;Но я по-прежнему получаю те же сообщения об ошибках, даже когда реализация функций шаблона включена в (.h), как и должно быть.
Любая помощь будет отличной, спасибо.