Я пытаюсь создать набор, который может быть заполнен экземплярами класса. Я думал, что требование для набора состоит в том, что элементы можно сравнивать, и поэтому в этом случае мне нужно рассказать классу, как их можно сравнивать. Я создал следующий класс:Создание набора классов
class Myclass
{
public:
Myclass(int i):storedval(i) {}
int getval(){return storedval;}
friend bool operator> (Myclass &first, Myclass &second)
{
return first.getval()>second.getval();
}
friend bool operator< (Myclass &first, Myclass &second)
{
return first.getval()<second.getval();
}
private:
int storedval;
};
Но когда я пытаюсь добавить экземпляры к набору, как это:
Myclass a(50);
set<Myclass> Bunchofclasses;
Bunchofclasses.insert(a);
Это дает мне кучу текста ошибки, что я думаю, что говорит мне, что это не понимают операторы> и <. Как это должно быть сделано правильно?
Было бы полезно, если бы вы могли добавить ошибки. – DrYap
Кстати, поскольку операторы сравнения используют публичную функцию 'getval', им действительно не нужно дружить с классом. –
Сообщение juanchopanza уже помогло мне, но я приклеил ошибки здесь: http: //shrib.com/VNGKgtoQ – RobVerheyen