类没有命名类型

时间:2014-11-24 05:49:10

标签: c++ class

我正在尝试制作B +树 这是indexNode实现

#ifdef INDEX_NODE
#define INDEX_NODE 

#include "leafNode.h"

class indexNode : public node{
   private:
       std::map<int,indexNode*> childNodes;
       std::map<int,leafNode*> leafNodes;
       int childNode_size;
       bool isLeaf;
   public:
       indexNode(int size);
       ~indexNode();
       bool getLeafCheck();
       void setLeafCheck(bool isLeaf);
       indexNode* getSubTree(int key);
}

#endif

上面的C ++代码是&#34; indexNode.h&#34;

#include "indexNode.h"

indexNode::indexNode(int size): node(size){
     childNode_size = size + 1;
     isLeaf = false;
}

indexNode::~indexNode(){

}

bool indexNode::getLeafCheck(){
     return isLeaf;
}

void setLeafCheck(bool isLeaf){
    this -> isLeaf = isLeaf; 
} 

indexNode* getSubtree(int key){
   return childNodes.find(key) -> second; 
}

以上代码是indexNode.cc

但是,当我试图对此进行编译时 g ++ -c -Wall indexNode.cc indexNode.cc:3:1:错误:'indexNode'没有命名类型

发生这种错误 我怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

您应该将#ifdef INDEX_NODE更改为#ifndef INDEX_NODE。否则,交换机将隐藏类定义。

答案 1 :(得分:1)

在课程定义后你缺少一个分号。

} // need ;

#endif

另外,正如刘易斯所说,标题后卫需要ifndef而不是ifdef