Я столкнулся с проблемой с моим кодом C ++.После завершения конструктора Track я получаю «SIGABRT (Прервано) поврежденный размер по сравнению с prev_size» (я думаю, что когда Ts выходит из области видимости).
Как правильно передать этот вектор объектам-членам, не вызывая егопроблемы при выходе за рамки?Заранее спасибо за помощь!
Track::Track(std::vector<double> X, std::vector<double> Y){
cumulativeLengths = {0.0};
std::shared_ptr<std::vector<double>> Ts = arange<double>(0, X.size());
xSpline = Spline(*Ts, X);
ySpline = Spline(*Ts, Y);
}
class Spline {
public:
Spline();
Spline(std::vector<double>& x, std::vector<double>& y);
std::vector<double> x;
std::vector<double> y;
};
Spline::Spline(std::vector<double>& x, std::vector<double>& y): x(x), y(y) {
updateSpline();
}
template<typename T>
std::shared_ptr<std::vector<T>> arange(T start, T stop, T step) {
std::shared_ptr<std::vector<T>> values = std::make_shared<std::vector<T>>();
values->resize(std::ceil(stop-start/step));
auto it = values->begin();
for (T value = start; value < stop; value += step)
*it = value;
it++;
return values;
}