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

Problems using my struct as a return type

本文关键字:返回类型 问题 我的 结构      更新时间:2023-10-16

我正在构建一个模板类"myTree",其中包括一个私有结构"myNode"。我还有一个私有函数"findNode",我想返回一个myNode*。然而,当我尝试定义"findNode"时,我得到5个错误,说这似乎源于第一个错误,说我在"myNode"answers"*"之间缺少分号。

下面是基本代码:
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,错误消失了,这意味着我假设我使用结构的方式有问题。

错误如下:语法错误:在"*"之前缺少";"2)缺少类型说明符——假定为int3) 'N'未声明的标识符4)'ElemType'未声明的标识符5)'N'未声明的标识符

这些都指向函数声明行(myNode* myTree::findNode(const otherClass&

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

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

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