У меня есть следующий класс:C++ Связанный список, используя шаблоны
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, чтобы превью & Следующие указатели меняют свой тип на используемый класс?
Может быть что-то вроде:
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++ функций, таких как шаблоны. Поэтому я не уверен, какой синтаксис я должен использовать.
Да, я понимаю, что эти объекты могут принадлежать только одному списку, в то время. Это по дизайну. – user1054922
Просто чтобы вы знали, что есть встроенный связанный список – aaronman
Не нужно использовать 'typedef struct' в C++. достаточно «структуры». –