我正在构建一个包含私有结构“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){)。
答案 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);