background image

       C/C++

 

 中如何构造通用的对象链表

 

 

一个简化的问题示例

链表的难点在于必须复制链表处理函数来处理不同的对象,即便逻辑是完全相同的。例如:

两个结构类似的链表

struct Struct_Object_A

{

int a;

int b;

Struct_Object_A *next;

} OBJECT_A;

typedef struct Struct_Object_B

{

int a;

int b;

int c;

Struct_Object_B *next;

} OBJECT_B;

上面定义的两个结构只有很小的一点差别。OBJECT_B   

和 OBJECT_A 之间只差一个整型

变量。但是,在编译器看来,它们仍然是非常不同的。必须为存储在链表中的每个对象复
制用来添加、删除和搜索链表的函数。为了解决这个问题,可以使用具有全部三个变量的

 

一个联合或结构,其中整数 c 并不是在所有的情况下都要使用。这可能变得非常复杂,并
会形成不良的编程风格。

代码解决方案:虚拟链表