错误:A未命名类型

时间:2016-02-14 16:00:40

标签: c++ class object

我创建了两个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

2 个答案:

答案 0 :(得分:2)

您的B.h包括A.hA.h包括B.h。这会导致您B.h包括B.h

A.h删除include "B.h"。它未被使用。

答案 1 :(得分:0)

让我们看看A.h:

首先它包括B.h.这引入了B类的定义,它使用了A类。接下来它定义了A类。这就是问题所在。正如其他人所说,删除未使用的包含将解决问题。