使用我的struct作为返回类型的问题

时间:2011-12-08 11:52:54

标签: c++ struct

我正在构建一个包含私有结构“myNode”的模板化类“myTree”。我还有一个私有函数“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&amp; key){)。

2 个答案:

答案 0 :(得分:4)

myNode是一个内部类,需要在返回类型中进行限定:

template <size_t N, typename ElemType>
typename myTree<N,ElemType>::myNode*
myTree<N, ElemType>::findNode(const otherClass<N>& key)

答案 1 :(得分:2)

之后你需要一个分号
  myNode* findNode(const otherClass<N>& key);