c ++中的语法错误

时间:2012-01-11 21:49:47

标签: c++ visual-c++

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有错误。请帮助我!

2 个答案:

答案 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'声明。您需要在使用之前声明该类