Проблема с использованием приоритета для пользовательских объектов в c

#c #huffman-code

#c #хаффман-код

Вопрос:

Итак, мне нужно написать сжатие / распаковку Хаффмана для моего школьного задания, и у меня возникли проблемы с использованием очереди приоритетов для хранения частот.

Два файла, которые вызывают у меня головную боль, — это HCNode.hpp и main.cpp . В HCNode.hpp файле, который я перегрузил bool operator<(const HCNodeamp; other) , и в моем main.cpp , когда я пытаюсь инициализировать очередь приоритетов, подобную этой:

  priority_queue< HCNode, vector < HCNode >, less< HCNode> > freq;
  

Компилятор выдает мне кучу ошибок

редактировать: вот одна из ошибок

/usr/include/c /4.6/bits/stl_queue.h: 391:9: создан из ‘std::priority_queue<_Tp, _Sequence, _Compare>::priority_queue(const _Compareamp;, const _Sequenceamp;) [с _Tp = HCNode, _Sequence = std::vector, _Compare = std::меньше]’
compress.cpp:134:59: создан отсюда

большинство ошибок, похоже, вызваны каким-то конфликтом с библиотекой.

неважно, проблема устранена, код преподавателя был неполным. Спасибо тем, кто все же просмотрел этот пост.

Комментарии:

1. Вы не думаете, что вам следует опубликовать сообщение об ошибке?

Ответ №1:

Опубликованное вами сообщение об ошибке — это не точное сообщение об ошибке, а строка создания экземпляра, которая вызывает фактическую ошибку.

Я думаю, что наиболее вероятная ошибка, вызывающая ошибку, заключается в том, что компаратор, которым в данном случае является operator< , не является функцией-членом const.

Проверьте, является ли это функцией-членом const.

Комментарии:

1. Ага, это была точная причина ошибки. Учитель забыл слово ‘const’ в конце компаратора в файле, который он нам дал = .