我有父母和儿童课程。子继承自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; :未声明的标识符
答案 0 :(得分:2)
转发声明Child,并将指针存储在vector中。
<强> Parent.h 强>
#pragma once
#include <vector>
using std::vector;
class Child;
class Parent
{
public:
Parent();
~Parent();
vector<Child*> children;
};