@jozo,
Вы можете проверить приложение https://github.com/jatir/django-rest-framework-last-modified django, чтобы использовать Last-Modified [ 113]
Редактировать:
вы можете проверить пример в каталоге тестов https://github.com/jatir/django-rest-framework-last-modified/blob/master/tests /views.py#L14
Запустите путем чтения текста ошибки точно, как это:
двоичный файл '==': никакой оператор не нашел, который берет левый операнд типа 'запись константы'
Это означает, что это не может найти никого ==
оператор, который принимает entry
введите как его левый операнд. Этот код не действителен:
entry const e;
if (e == foo)
Вы имеете, показал нам код для Вашего класса списка, но это не то, о чем ошибка. Ошибка об отсутствии операторов для entry
введите, независимо от того, что это. Любой дает класс operator==
функция, или объявляют автономное operator==
функция, которая принимает a const entry&
как его первый параметр.
struct entry {
bool operator==(const entry& other) const;
};
// or
bool operator==(const entry& lhs, const entry& rhs);
Я думаю, что последний является предпочтительным стилем.
Проблема относится к типу T, который используется в этом экземпляре, не имеющем оператор == определенный. Я предположил бы от Вашего вопроса, что это - класс 'запись'.
Могло бы также случиться так, что класс 'записи' не имеет оператора == определенным правильно для взятия константы entry& в качестве параметра.
Это вероятно"const
отравление", где использование const
в объявлении Вашей поисковой функции вынудит Вас добавить const
версии всех нисходящих функций Вы звоните.
В объявленной функции const
, this
указатель рассматривают const
, что означает, что всех участников, которых Вы используете через тот указатель, рассматривают const
также. Если Ваш operator == ()
для любого типа T Вы специализируетесь с, явно не указывает const
параметры, Вы получите эту ошибку.
Если Вы не можете удостовериться, что весь Ts, который Вы используете, будет иметь надлежащее operator == ()
вызовы, я удалил бы спецификаторы константы на шаблонах функции членства.
Оператор равенства для пользовательских типов не определяется по умолчанию. Это не имеет никакого отношения к Вашему шаблонному классу, а скорее Вашему struct
или class
"запись".
Поэтому в необходимо будет переопределить оператор равенства в struct entry
или class entry
.
С другой стороны, если Вы не хотите вызывать все, что использует тот шаблон для определения оператора равенства, можно изменить шаблонный интерфейс для принятия Компаратора, который делает сравнение равенства.
Иногда достаточно записать
...
if (target == elements[i])
...
Тип T, который Вы используете в качестве параметра для этого класса, должен иметь operator==()
так как код, который Вы даете, не содержит инстанцирование шаблона его трудное для знания что случилось.
На другой ноте функциональные определения шаблона должны быть в.h файле наряду с классом, или иначе компилятор не смог бы инстанцировать его правильно.