我创建了两个A和B类,所以我有5个文件,main.cpp,A.h,A.cpp,B.h,B.cpp
我已经包含了它应该是的所有标题,我试图在类B中创建类A的对象,我得到以下错误:错误:A没有命名类型
如果我重复它,就像我在A类中定义对象B那样有效,但是,错了吗?
这就是我的B.h看起来像>
#ifndef B_H
#define B_H
#include <iostream>
#include "A.h"
using namespace std;
class B
{
public:
B();
protected:
private:
A instance;
};
#endif // B_H
现在是A.h
#ifndef A_H
#define A_H
#include <iostream>
#include "B.h"
using namespace std;
class A
{
public:
A();
protected:
private:
};
#endif // A_H
答案 0 :(得分:2)
您的B.h
包括A.h
和A.h
包括B.h
。这会导致您B.h
包括B.h
。
从A.h
删除include "B.h"
。它未被使用。
答案 1 :(得分:0)
让我们看看A.h:
首先它包括B.h.这引入了B类的定义,它使用了A类。接下来它定义了A类。这就是问题所在。正如其他人所说,删除未使用的包含将解决问题。