Итак, я пытаюсь создать структуру TileSet
и переопределить оператор <
, а затем поставить TileSet
в очередь приоритетов. Я прочитал, что я не могу назвать неконстантные методы константной ссылки, но не должен быть действительно проблемой, я просто доступ пользователей, а не их изменениями:C++ struct - Передача const, поскольку этот аргумент отбрасывает квалификаторы
struct TileSet
{
// ... other struct stuff, the only stuff that matters
TileSet(const TileSet& copy)
{
this->gid = copy.gid;
this->spacing = copy.spacing;
this->width = copy.width;
this->height = copy.height;
this->texture = copy.texture;
}
bool operator<(const TileSet &b)
{
return this->gid < b.gid;
}
};
Сообщения об ошибке говорит мне: минуя 'const TileSet' as 'this' argument of 'bool TileSet::operator<(const TileSet&)' discards qualifiers [-fpermissive]
Что это значит? Изменение переменных в const не сработало, и мне нужно, чтобы они были неконстантными.
Ошибка возникает, когда я пытаюсь сделать:
std::priority_queue<be::Object::TileSet> tileset_queue;
Возможный дубликат [C++ «Прохождение как отбрасывает квалификаторы»] (http://stackoverflow.com/questions/10226787/c-passing-as-this-discards-qualifiers) – Jack
Я думаю, вы могли бы искать google перед тем, как спросить : http://stackoverflow.com/questions/10226787/c-passing-as-this-discards-qualifiers http://stackoverflow.com/questions/5973427/error-passing-xxx-as-this-argument-of -xxx-discards-qualifiers http://stackoverflow.com/questions/2412608/g-const-discards-qualifiers – Jack