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.
Подскажите, почему это может происходить (и есть ли советы по проекту в целом)?