-2

我正在尝试实现一个具有类成员指针和返回指针的方法的类,但在编译时我得到“语法错误:缺少';' 在“*”之前”和“缺少类型说明符 - 假定为 int。注意:C++ 不支持默认 int”错误

这是代码:
Main.cpp:

#include "AClass.h"
#include "BClass.h"

int main ( int argc, const char* argv[] )
{
    AClass a;
    BClass b;
    return 0;
}

AClass.h:

#ifndef ACLASS_H
#define ACLASS_H

#include "BClass.h"

class AClass
{
public:
    BClass* getB ();
    void setB (BClass* inst);
private:
    BClass* b;
};

#endif

BClass.h:

#ifndef BCLASS_H
#define BCLASS_H

#include "AClass.h"

class BClass
{
public:
    AClass* getA ();
    void setA (AClass* inst);
private:
    AClass* a;
};

#endif

我什至没有用 cpp 文件充实类,我得到一串错误:创建 C++ 文件并定义所有内容都没有关系,这些错误仍然存​​在。

1>------ Build started: Project: memberUDFpointers, Configuration: Debug Win32 ------
1>  Main.cpp
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C2143: syntax error : missing ';' before '*'
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): warning C4183: 'getA': missing return type; assumed to be a member function returning 'int'
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(10): error C2061: syntax error : identifier 'AClass'
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C2143: syntax error : missing ';' before '*'
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我看过很多不同的帖子,但我仍然在这个问题上摸不着头脑。有人可以给我一个线索吗?

4

1 回答 1

1

你对AClass的定义依赖于BClass的定义,而BClass的定义又依赖于AClass的定义。您不能在另一个已经定义之前定义一个。

幸运的是,实际的类只使用指向另一个类的指针,所以你可以只声明一个类:

class A;

class Bclass { 
    // ...
};

然后从那里去。

于 2012-03-14T22:45:56.500 回答