grazie per l'interessamento innanzitutto.
allora io ho questa funzione

codice:
void ps_configure_module::insert_data(void)
{
	map_struct_iterator = ps_power_module::power_module_table.find(name);

	if(map_struct_iterator != ps_power_module::power_module_table.end())
	{
		cout << "modulo gia presente" << endl;

		map_struct_iterator->second.add_operator(operator_type, data_type, model,parameter);
	}
	else
	{

		cout << "modulo nuovo1" << ps_power_module::power_module_table.size()<< endl;

ps_power_module::power_module_table.insert(std::pair<string,ps_power_module_struct>(name, ps_power_module_struct(name)));

		cout << "modulo nuovo2" << endl;

		map_struct_iterator = ps_power_module::power_module_table.find(name);

		cout << "modulo nuovo3" << endl;

		map_struct_iterator->second.add_operator(operator_type, data_type, model,parameter);
	
	}

};
e l'esecuzione da segmentation fault prima di stampare "modulo nuovo2". il costruttore di ps_power_module_struct è il seguente:
codice:
ps_power_module_struct::ps_power_module_struct(string name):module_name(name)
{

	cout << "ps_power_module_struct1" << endl;


	add_default_operator();//aggiungo gli operatori di default

	cout << "ps_power_module_struct4" << endl;

};

void ps_power_module_struct::add_default_operator(void)
{
	unsigned int tmp_int = 0;
	string tmp_string;

	cout << "ps_power_module_struct2" << endl;


	//aggiungo qui alla mappa i valori di default tipo "other &", "other |" con modello per la potenza il "costant"
	for(tmp_int=0 ; tmp_int < (sizeof(operator_possible)/sizeof(operator_possible[0])) ; ++tmp_int)
	{ 
		tmp_string = "other " + operator_possible[tmp_int];

	cout << "ps_power_module_struct3" << endl;
		
		model_operator.insert(std::pair<string,ps_power_model*>( tmp_string, get_power_model(0)) );
		
	};

};
come ho detto nell'altro post power_module_table è un oggetto di tipo std::map statico della classe ps_power_module.
lui stampa tutto compreso "ps_power_module_struct4" quindi la costruzione va a buon fine, giusto??


grazie per l'aiuto


Marco