Я озадачен, потому что я не могу понять, где моя ошибка / проблема.У меня есть класс Instruction, который использует два пользовательских оператора, один оператор присваивания и один оператор сравнения.Ранее я использовал оператор сравнения только для того, чтобы использовать std :: sort для сортировки инструкций на основе одного из их членов - имени std :: string.Однако, поскольку я начал перефакторинг всего проекта, я изменил некоторых участников на постоянные.Это привело меня к необходимости использовать список инициализации для этих констант.Это, в свою очередь, привело меня к необходимости создания оператора присваивания, потому что эти инструкции копируются при возврате в векторы.Здесь все идет не так.Я включил объявление класса и конструктор и операторы.
инструкция.hpp
class Instruction
{
private:
unsigned int param_size;
const float max_angle, min_angle;
bool micro_mutated;
protected:
const std::string body_part;
std::vector<Parameter <float> > parameters;
public:
Instruction(std::string name, float max, float min);
Instruction operator=(const Instruction& I);
bool operator<(const Instruction& I) const;
//there are a few more functions but are completely irrelevant
}
инструкция.cpp:
Instruction::Instruction(std::string name,float max, float min) :
body_part (name), max_angle(max), min_angle(min)
{}
Instruction Instruction::operator=(const Instruction& I)
{
(*this) = I;
return (*this);
}
bool Instruction::operator<(const Instruction& I) const
{
return body_part < I.body_part;
}
Единственная причина, по которой я создал оператор присваивания(что, честно говоря, я никогда не делал раньше), потому что, когда я пытался push_back Instructions, компилятор жаловался на невозможность создания инструкций "отсюда", и я думал, что это связано с постоянными членами.Без постоянных членов все работало нормально, даже сортировка.Теперь странная часть.Если я удаляю std :: sort, приведенный выше код работает, но не все время.Несколько раз он падал через некоторое время, иногда он не падал.Но в тот момент, когда я включаю сортировку, она сразу падает.Может кто-нибудь помочь, пожалуйста?