我正在尝试制作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'没有命名类型
发生这种错误 我怎么解决这个问题?答案 0 :(得分:1)
您应该将#ifdef INDEX_NODE更改为#ifndef INDEX_NODE。否则,交换机将隐藏类定义。
答案 1 :(得分:1)
在课程定义后你缺少一个分号。
} // need ;
#endif
另外,正如刘易斯所说,标题后卫需要ifndef
而不是ifdef
。