我wana
在c ++中创建一个bst
树,但我在此代码中有语法错误:
#pragma once
#include "BSTNode.h"
using namespace std;
class BST
{
private:
BSTNode* root;
public:
BST(void);
bool insert(int );
int search(int);
~BST(void);
};
和BSTNode
是:
#pragma once
#include "BST.h"
class BST;
class BSTNode
{
friend class BST;
private:
int data;
BSTNode * LeftChild, *RightChild;
public:
BSTNode(void);
int getData();
~BSTNode(void);
};
我的错误是:
Error 1 error C2143: syntax error : missing ';' before '*'
我认为dont
有错误。请帮助我!
答案 0 :(得分:3)
你有一个循环包含,有2个文件,并且由于#Pragma一次,两个文件只包含一次,因此BSTNode首先被解析并包含BST,但是BST不再包括BSTNode(因为它是pragma曾经。)
这导致BST不知道BSTNode是什么,解决方案是:
删除include和forward声明类如下:
#pragma once
using namespace std;
class BSTNode; //Forward declare class so that BST knows BSTNode (move include to .cpp file)
class BST
{
private:
BSTNode* root;
public:
BST(void);
bool insert(int );
int search(int);
~BST(void);
};
主要功能示例:
int main( int argc, const char* argv[] )
{
printf( "\nHello World\n\n" );
}
答案 1 :(得分:0)
没有类型的'BSTNode'声明。您需要在使用之前声明该类