我有以下课程:
typedef struct Listable
{
struct Listable *next;
struct Listable *prev;
// Lots of other class members not pertaining to the question excluded here
} Listable;
我像这样继承它:
typedef struct Object : Listable
{
} Object;
问题是,当我做这样的事情时:
Object *node;
for (node = objectHead; node; node = node->next);
'node = node->next' 出现错误,因为 node->next 是 Listable 类型,而 node 是 Object 类型。
如何使用 Listable 基类中的模板使 prev 和 next 指针将其类型更改为正在使用的类?
也许是这样的:
typedef struct Listable<T>
{
struct Listable<T> *next;
struct Listable<T> *prev;
// Lots of other class members not pertaining to the question excluded here
} Listable;
我像这样继承它:
typedef struct Object : Listable<Object>
{
} Object;
我有超过 10 年的 C 经验,但对模板等 C++ 功能相当陌生。所以我不确定我应该使用什么语法。