Node.
У меня есть два публичных метода, insert и remove, которые добавляют/убирают узел по индексу.
В каждом этом методе предполагается поиск узла, относительно которого будут происходить операции добавления/удаления.
Алгоритм поиска узла для обоих случаев одинаковый.
По изначальной задумке я написал приватный метод findNode, который должен был возвращать указатель на найденный Node.
Но т.к. структура Node описана в приватной секции, я не могу возвращать указатель на этот узел.
Как правильно в данном случае можно декомпозировать алгоритм поиска узла, чтобы он не повторялся дважды в insert и remove?
Моя идея ввести поле current_node, куда я буду устанавливать найденный узел, кажется мне чрезвычайно кастыльной
>Но т.к. структура Node описана в приватной секции, я не могу возвращать указатель на этот узел. Почему?
Никак не могу скомпилировать код, поэтому возникло такое предположение https://onlinegdb.com/45xImHfzxs Вы бы не могли подсказать, в чём может быть дело?
typename DoublyList<T>::Node*
Большое спасибо, это действительно работает! Судя по всему, я упускаю какую-то базовую для понимания вещь. Подскажите, пожалуйста, как работает этот синтаксис? Как это называется, чтобы загуглить?
Приватные структуры могут быть видны в функциях класса. Вне класса Node - сомостоятельный тип, вот компилятор и ищет Node, чтобы указать что нужно брать именно структуру класса, нужно указать класс где искать DoublyList<T>::. Как загуглить - хз, вроде это просто свойства private модификатора и свойства имен типов.
Спасибо! Я пробовал с DoublyList<T>::, но тоже не получилось. Может неправильно пробовал. Ключевое слово typename помогло, вот его пока я ещё плохо умею применять
typename нужен чтобы указать компилятору что это тип, а не поле класса или что-нибудь ещё, например, поле будет вызваться аналогично, а из-за шаблона заглянуть и понять что это тип - не получиться, хотя иногда копмиляторы догадываются и без typename, вроде говорили в С++20, догадываться лучше. Вроде это https://en.cppreference.com/w/cpp/language/dependent_name
Обсуждают сегодня