【发布时间】:2015-07-28 00:33:45
【问题描述】:
假设我有 2 个基类,Base1 和 Base2。
// Base1.h
#ifndef BASE1_H
#define BASE1_H
#include "Base2.h"
class Base2;
class Base1 {
...
void func(Base2* b);
virtual void subfunc(Base2* b) = 0;
...
};
#endif
// Base2.h
#ifndef BASE2_H
#define BASE2_H
#include "Base1.h"
class Base1;
class Base2 {
...
void func(Base1 *b);
virtual void subfunc(Base1* b) = 0;
...
};
#endif
并且我在每个头文件中都包含彼此的头文件,因为 Base1 具有以 Base2 作为参数的函数,而 Base2 具有具有Base1 作为参数。
然后假设我有 Base1 和 Base2 的 5 个子类(派生类);
Base1_Sub1、Base1_Sub2、Base1_Sub3、Base1_Sub4、Base1_Sub5 用于 Base1
Base2_Sub1、Base2_Sub2、Base2_Sub3、Base2_Sub4、Base2_Sub5 用于 Base2.
我希望能够将 Base1 的 5 个派生类作为类函数的参数,比如说 Base2_Sub1。
// Base2_Sub1.h
#ifndef BASE2_SUB1_H
#define BASE2_SUB1_H
#include "Base2.h"
// What else to include!?
class Base2_Sub1 : public Base2 {
...
void subfunc(Base1_Sub1 *b);
void subfunc(Base1_Sub2 *b);
void subfunc(Base1_Sub3 *b);
void subfunc(Base1_Sub4 *b);
void subfunc(Base1_Sub5 *b);
...
};
#endif
Base1_Sub1.h 到 Base1_Sub5.h 应该包含在哪个文件中?
我还需要 Base2 的子类(例如 Base2_Sub1)以同样的方式将 Base1 的子类作为函数参数。
我发现正确包含这些标题非常令人困惑,我不知道如何。请帮帮我。
【问题讨论】:
标签: c++ class subclass derived-class