错误C2504循环包含

时间:2014-04-21 18:08:29

标签: c++ inheritance include

我有父母和儿童课程。子继承自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:&#39;父母&#39; :基类未定义

parent.h(11):错误C2065:&#39; Child&#39; :未声明的标识符

1 个答案:

答案 0 :(得分:2)

转发声明Child,并将指针存储在vector中。

<强> Parent.h

#pragma once
#include <vector>

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