嗨,我已经读过有关该主题的类似问题,但是我不能解决我的问题。
我认为我必须做一个前向声明,所以我尝试了以下内容。
我有A,B和InterfaceA三个类
定义接口(interface)A
#ifndef INTERFACE_A_H
#define INTERFACE_A_H
#include "B.h"
namespace Example
{
class B; // Forward declaration?
class InterfaceA
{
Example::B test;
};
}
#endif
Definiton A级
#ifndef A_H
#define A_H
#include "InterfaceA.h"
namespace Example
{
class A : public Example::InterfaceA
{
};
}
#endif
定义等级B
#ifndef B_H
#define B_H
#include "A.h"
namespace Example
{
class A; // Forward declaration?
class B
{
Example::A test;
};
}
#endif
主要的
#include "A.h"
#include "B.h"
int main()
{
Example::A a;
Example::B b;
}
我在Visual Studio中收到以下错误:
'Example::B::test'使用未定义的类'Example::A'
编辑:
到目前为止,谢谢您提供的所有帮助。这非常有帮助。我认为我的问题是我在实际项目中的设计非常糟糕。我会改变的。
除此之外,我现在对前向声明有了更好的理解:-)
最佳答案
您正在创建循环依赖项。修改您的设计。
您真的需要在B内的类A和在A内的B的实例吗?