错误C2504圆形包含

error C2504 circular inclusion

本文关键字:包含 C2504 错误      更新时间:2023-10-16

我有Parent和Child类。子项从父项继承。我想将父对象的子对象存储在子对象的向量中。

我将Child标头包含在Parent标头中,但我必须将Parent标头包含在Child标头中(因为它继承自Parent)。

如何克服这种圆形包含?

Parent.h

#pragma once
#include <vector>
#include "Child.h"
using std::vector;
class Parent
{
public:
    Parent();
    ~Parent();
    vector<Child> children;
};

Parent.cpp

#include "stdafx.h"
#include "Parent.h"

Parent::Parent()
{   
}

Parent::~Parent()
{
}

Child.h

#pragma once
#include "Parent.h"
class Child : Parent
{
public:
    Child();
    ~Child();
};

Child.cpp

#include "stdafx.h"
#include "Child.h"

Child::Child()
{
}

Child::~Child()
{
}

错误

child.h(4):错误C2504:"Parent":基类未定义

parent.h(11):错误C2065:"Child":未声明的标识符

Forward声明Child,并将指针存储在向量内部。

Parent.h

#pragma once
#include <vector>
using std::vector;
class Child;
class Parent
{
public:
    Parent();
    ~Parent();
    vector<Child*> children;
};