簡體   English   中英

類未命名類型

[英]Class does not name a type

我正在嘗試制作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 ++代碼是“ indexNode.h”

#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'未命名類型時

發生這種錯誤,我該如何解決?

您應該將#ifdef INDEX_NODE更改為#ifndef INDEX_NODE。 否則,類定義將被開關隱藏。

類定義后,您缺少分號。

} // need ;

#endif

另外,正如Lewis所提到的,標頭后衛必須是ifndef而不是ifdef

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM