У вас есть const ссылка на T
в push()
, но ваш operator==
принимает только неконстантные ссылки.
bool wComplex::operator==(wComplex &El)
должно быть
bool wComplex::operator==(wComplex const &El) const
Или, оптимально, ваша operator==
должна быть бесплатной функцией:
bool operator==(wComplex const & Left, wComplex const & Right) {
}
Если вам не нужен внешний доступ к переменным-членам wComplex, вам нужно сделать операторфункция друга:
class wComplex {
...
friend bool operator==(wComplex const & Left, wComplex const & Right);
...
};
РЕДАКТИРОВАТЬ: В обновленном вопросе:
Вы не можете назначить this
.this
имеет тип T * const
- так как его не имеет смысла изменять.То, что вы пытаетесь сделать, это изменить внешнюю переменную, которая указывает на текущий класс, вы не можете сделать это изнутри функции-члена класса, если эта внешняя переменная не передана в качестве аргумента.
Я думаю, вынеобходимо создать класс «очередь», который управляет экземплярами класса «узел» - попытка объединить контейнер и содержащиеся в нем элементы не очень хорошая идея
Кроме того, наследование контейнеров стандартной библиотеки редко является хорошей идеей.Если вы хотите использовать std::queue
, создайте переменную-член.