2015-12-09 2 views
0

Новое в переполнении стека. Так я пытаюсь восстановить все, что я узнал до сих пор в колледже, и вот шаблонный узел, который я буду использовать, чтобы перейти в стек/очередьошибка: ожидаемый конструктор, деструктор или преобразование типа перед токеном '*'

template<typename T> 
class node{ 

public: 

    node();       
    node(T data);     
    ~node();       

    T   GetData();   
    node  *&GetNext();   
private: 

    void  DeleteNode();  //Deletes Node 

    T   m_data;    //Template Data 
    node  *next;    //next pointer 
}; 

template<typename T> 
node *&node<T>::GetNext() //Error is here 
{ 
    return next; 
} 

Ошибка читает как «ошибка: ожидается, конструктор , деструктор или преобразование типа перед «*» токеном «

Я пробовал разные варианты движущегося узла и * &, но ни один из них не работает.

+0

Что вы пытаетесь сделать? Возможно, этот вопрос может помочь нам лучше помочь вам. – Elyasin

+0

Взятие ссылки на указатель как аргумент имеет смысл. Возврат ссылки на указатель обычно нет. Вы не хотите, чтобы пользователи вашего класса меняли внутренние указатели, не так ли? –

+0

@hlt, конечно, вы можете иметь ссылки на указатели и должны иметь тот, который используется там. – JSF

ответ

2
node<T> *&node<T>::GetNext() 

Вам нужен T, указанный как для типа возврата, так и для класса, содержащего функцию.

+0

Не думал об этом. Почему это необходимо? это связано с тем, что базовая структура для узла является шаблоном, поэтому оба требуют ? –

+0

Это определение начинается за пределами класса, поэтому 'node' не является типом. Вам нужно указать тип возвращаемого типа. Существуют и другие ситуации с шаблонами, в которых тип возврата из функции класса шаблона может быть одним и тем же классом шаблона с другим параметром шаблона. Поэтому, если синтаксис языка каким-то образом принял тот же параметр шаблона, это было бы предельным. – JSF

Смежные вопросы

 Смежные вопросы