Seg. Fault При push_back() в вектор-поле класса

Имеется класс, хранящий список из объектов из другой части библиотеки:

#include <hc2img/staff.hpp>
#include <harmony-core/harmony-core.hpp>
#include <vector>

class Staff final {
  public:
    void add(harmony_core::Note &n) noexcept;
  private:
    std::vector<harmony_core::Note> note_list;
};

Имеется реализация:

#include <hc2img/staff.hpp>
void Staff::add(harmony_core::Note &n) noexcept {
    note_list.push_back(n);
}

По какой-то причине код, в котором я пытаюсь добавить объект в лист, вызывает Ошибку сегментирования:

#include <iostream>
#include <harmony-core/harmony-core.hpp>
#include <hc2img/hc2img.hpp>

int main(){
    harmony_core::Note n;
    n.set_octave(harmony_core::Octave::_1_LINE);
    hc2img::List l;
    hc2img::Staff s;
    s.add(n); //Здесь сегфолт
    l.add(s);
}

Аналогичный пример с int вместо harmony_core::Note работает исправно:

//S.cpp
#include "S.hpp"
void S::add(int &o){
    list.push_back(o);
}
//S.hpp
#include <vector>
class S final {
public:
    void add(int &o);
private:
    std::vector<int> list;
};
#include "S.cpp"
int main(){
    S s;
    int x = 1;
    s.add(x); //Тут всё ок
}

Полный код с ошибкой здесь: .cpp и .hpp.

Подскажите, почему это может происходить (и есть ли советы по проекту в целом)?


Ответы (0 шт):