Ciao a tutti.
In questo semplice programma ottengo un segmentation fault (11) quando viene allocato l'oggetto della classe Molla:
codice:
#include "Gravita.h"
#include "IntegratoreEulero.h"
#include "Molla.h"

#include <iostream>
using std::cout;
using std::endl;

int main()
{
	Gravita g({0,0,-9.81}, 0);
	
	cout << "Campo di gravita:" << endl;
	cout << g << endl;
	
	Molla M({0.4},{0},0.1,0.1,{0,0,0},{0,0,1},{0,1,-1},1.38165,0.01);
	g.agisci_su(M);
	
	cout << "\nMolla:" << endl;
	cout << M << endl;
	
	return 0;
}
Mi sono scervellato un po' ma proprio non capisco da dove possa venire. Il problema però é in quella classe perché le altre le ho testate tutte piuttosto a fondo e hanno sempre funzionato... Allego quindi la definizione di tale classe:
codice:
#ifndef MOLLA_H
#define MOLLA_H

#include "OggettoMobile.h"

class Molla : public OggettoMobile
{
public:
	// --- COSTRUTTORI ---
	Molla(const Vettore&, const Vettore&, double, double, const Vettore&, const Vettore&, const Vettore&, double, double = 0, double = 1, double = 1);
	Molla(const vector&, const vector&, double, double, const vector&, const vector&, const vector&, double, double = 0, double = 1, double = 1);
	Molla(const list&, const list&, double, double, const list&, const list&, const list&, double, double = 0, double = 1, double = 1);
	
	// --- METODI ---
	Vettore evoluzione() const;
	
	void stampa(std::ostream&) const;
	
	Vettore get_posizione() const;
	Vettore get_velocita() const;

protected:
	// --- ATTRIBUTI ---
	Vettore origine;
	Vettore direzione;
	double k;
	double b;
	
private:
	// --- METODI ---
	Vettore unitario(const Vettore&) const;
	Vettore unitario(const vector) const;
	Vettore unitario(const list) const;
};

#endif
codice:
#include "Molla.h"

// *** PUBLIC ***

// --- COSTRUTTORI ---

Molla::Molla(const Vettore& p, const Vettore& v, double r, double m, const Vettore& f, const Vettore& O, const Vettore& d, double k, double b, double a, double mu)
: OggettoMobile(p,v,r,m,f,a,mu), origine(O), direzione(unitario(d)), k(k), b(b)
{}

Molla::Molla(const vector& p, const vector& v, double r, double m, const vector& f, const vector& O, const vector& d, double k, double b, double a, double mu)
: OggettoMobile(p,v,r,m,f,a,mu), origine(O), direzione(unitario(d)), k(k), b(b)
{}

Molla::Molla(const list& p, const list& v, double r, double m, const list& f, const list& O, const list& d, double k, double b, double a, double mu)
: OggettoMobile(p,v,r,m,f,a,mu), origine(O), direzione(unitario(d)), k(k), b(b)
{}

Vettore Molla::evoluzione() const
{
	Vettore r( (1 / massa) * (forza * direzione - k * omega[0] - b * omega_[0]) );

	return r;
}

void Molla::stampa(std::ostream& out) const
{
	OggettoMobile::stampa(out);
	out << direzione << " # direzione" << std::endl;
	out << k << " # k" << std::endl;
	out << b << " # b" << std::endl;
}

Vettore Molla::get_posizione() const
{
	return origine + omega[0] * direzione;
}

Vettore Molla::get_velocita() const
{
	return omega_[0] * direzione;
}

// *** PRIVATE ***

// --- METODI ---

Vettore Molla::unitario(const Vettore& V) const
{
	return (1 / V.norma()) * V;
}

Vettore Molla::unitario(const vector V) const
{
	Vettore r(unitario(V));

	return std::move(r);
}

Vettore Molla::unitario(const list V) const
{
	Vettore r(unitario(V));

	return std::move(r);
}
Grazie,
R.