Проблемы с использованием моей структуры в качестве типа возврата - PullRequest
0 голосов
/ 08 декабря 2011

Я создаю шаблонный класс "myTree", который включает в себя приватную структуру "myNode".У меня также есть частная функция "findNode", которую я хотел бы вернуть myNode *.Тем не менее, когда я пытаюсь определить «findNode», я получаю 5 ошибок, говорящих о том, что это происходит из-за первой ошибки, которая говорит, что я пропускаю точку с запятой между «myNode» и «*».

Вот основной код:

template <size_t N, typename ElemType>
class myTree {
public:
  //...
private:
  struct myNode{
    //...
  };
  myNode* findNode(const otherClass<N>& key);
};

template <size_t N, typename ElemType>
myNode* myTree<N, ElemType>::findNode(const otherClass<N>& key) {
  return 0;
}

Я попытался изменить тип возвращаемого значения на void, и ошибки исчезли, что означает, что я предполагаю, что что-то не так с использованием моей структуры.

Ошибки: 1) Синтаксическая ошибка: отсутствует ';'до '*' 2) отсутствующий спецификатор типа - предполагается, что int 3) необъявленный идентификатор N) 4) необъявленный идентификатор ElemType 5) необъявленный идентификатор N

Все они указывают на строку объявления функции (myNode *)myTree :: findNode (const otherClass & key) {).

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

myNode - это внутренний класс, для которого необходимо указать тип возвращаемого значения:

template <size_t N, typename ElemType>
typename myTree<N,ElemType>::myNode*
myTree<N, ElemType>::findNode(const otherClass<N>& key)
2 голосов
/ 08 декабря 2011

Вам нужна точка с запятой после

  myNode* findNode(const otherClass<N>& key);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...