Делаю двоичное дерево поиска, которое хранит функцию сравнения элементов cmp. При попытке использовать ее во внутреннем классе iterator меня информируют:
C2327: tree::cmp не является именем типа, статическим членом или перечислителем.
template <
/* code */
typename Compare = std::less<>
> class tree {
struct node;
using pointer = std::shared_ptr<node>;
/* code */
Compare cmp{};
class iterator {
pointer current;
void next_parent(pointer& leaf)
{
if (!leaf->parent)
return;
else if (cmp(leaf, leaf->parent)) // error
leaf = leaf->parent;
else
leaf = next_parent(leaf->parent);
}
public:
iterator& operator++()
{
if (current->right)
current = current->right;
else
next_parent(current);
return *this;
}
/* code */
};
/* code */
};
Как получить доступ к этой нестатической cmp?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости