我有如下的类:
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++特性还比较新。因此,我不确定应该使用什么语法。
typedef struct
,只需使用struct
即可。 - Captain Obvlious