我想实现一个类的指针为类成员和方法返回指针,但在编译我得到“语法错误:缺少';'之前 '*'”和 “缺少类型说明符 - 假定为int。注意:C++不支持默认int” 错误C++类的方法返回指针到用户定义的类实例
下面的代码:
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
我还没有充实OU t类与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 ==========
我已经看了很多不同的帖子,但我仍然在这个问题上摸不着头。 有人可以给我一个线索吗?
你有圆形包容;在头文件中使用前向声明而不是'#include'。 – ildjarn 2012-03-14 22:41:37
循环依赖,前向声明;这应该让你开始。 – Nim 2012-03-14 22:42:25
[C++中的循环依赖]可能的重复(http://stackoverflow.com/questions/4018816/circular-dependency-in-c) – 2012-03-14 22:43:38