У меня есть скелет проекта, который мне нужен для реализации двусвязного списка (без использования stl), и способ реализации класса состоит в том, чтобы наследовать все методы из структуры, например:
struct IDoubleList {
virtual IDoubleNode * getHead() = 0;
virtual IDoubleNode * getTail() = 0;
virtual void setHead(IDoubleNode * head) = 0;
virtual void setTail(IDoubleNode * tail) = 0;
virtual void addBack(int value) = 0;
};
class DoubleList : public IDoubleList {
public:
virtual IDoubleNode * getHead();
virtual IDoubleNode * getTail();
virtual void addBack(int value);
virtual void setHead(IDoubleNode * head);
virtual void setTail(IDoubleNode * tail);
private:
DoubleNode* m_Head;
DoubleNode* m_Tail;
};
Поскольку вы можете использовать методы получения и установки, а не класс для возврата / передачи указателей. Мой вопрос заключается в том, как я могу использовать методы в объекте, на который указывает m_Tail. Я пытался использовать m_Tail.setNext (newNode); где setNext - это метод в классе DoubleNode, но в нем говорится, что выражение должно иметь тип класса.
Также, когда я возвращаю / передаю DoubleNode *, должен ли я выполнять кастинг или что-то в IDoubleNode *? а может наоборот?
PS Давненько я не использовал C / C ++, может быть, я забыл кое-что о указателях функций? ИДК сейчас потерян
Спасибо заранее, дайте мне знать, если вам нужна дополнительная информация