简述:
本文介绍一个类里调用其兄弟类(继承同一父类)的接口, 但是不直接传递兄弟类的实例给调用类实例.
场景:
B和C继承自A, C通过其父类A调用B的接口操作B的sum.
原理:
利用Class A 的静态变量(链表), 存储所有其子类(这里假设是B)的实例指针, 同时记录子类类型, 这样, 所有子类(这里假设是C)都可以通过父类来调用其他子类(或同类)的实例.
代码:
#ifndef A_H
#define A_H
enum NodeType
{
T_A = 0,
T_B = 1,
T_C = 2,
T_Count
};
struct ChildrenNode
{
void* p;
int type;
};
class A
{
public:
A();
~A();
const struct ChildrenNode* getChildren(int index);
static int addChildren(void* child, NodeType type);
static void delChildren(int index);
static const int N = 10;
private:
static ChildrenNode Children[N];
};
#endif //A_H