salve a tutti, ho dei problemi con le STL!
ho creato una classe basse con dentro metodi virtuali, poi ho creato la sua classe derivata che implementa questi metodi, ma in futuro queste classi derivate saranno di più, ora vogllio mettere all'interno di una mappa elementi di queste classi derivate e allora per poter mettere dentro oggetti di qualsiasi delle classi derivate, nella definizione della mappa metto il nome della base, ma dopo quando voglio tirare fuori questi elementi dalla mappa, come faccio per prendere le caratteristiche della classi derivate e non della classe base... forse è meglio che vi posto il codice:
codice:
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <vector>
#include <sstream>
using std::ifstream;
using std::ofstream;
using std::string;
using std::cout;
using std::endl;
using std::cin;
using std::cerr;
using std::string;
using std::istringstream;
using std::vector;
class ps_power_model
{
public :
ps_power_model(){
cerr << "Error 504: Distructor not defined in derived class of ps_power_model" << endl;
};
virtual ~ps_power_model(){
cerr << "Error 506: Distructor not defined in derived class of ps_power_model" << endl;
};
virtual void ciao(){
cout << "booooo"<<endl;
};
static int get_number_parameter(void){
cerr << "Error 504: Function - get_number_parameter() - not defined in derived class of ps_power_model." << endl;
exit(1);
};
};
class ps_costant_model : public ps_power_model
{
public :
static int num_param;
ps_costant_model(){
cerr << "Error 510: Distructor not defined in derived class of ps_power_model" << endl;
};
~ps_costant_model(){
cerr << "Error 520: Distructor not defined in derived class of ps_power_model" << endl;
};
void ciao(){
cout << "Marco foreever"<<endl;
};
static int get_number_parameter(void){
return num_param;
};
};
int ps_costant_model::num_param(3);
ps_power_model * get_power_model(int);
int main(){
std::map<string, ps_power_model> power_module_table;
std::map<string,ps_power_model>::iterator map_iterator;
string ciao("ciao");
cout<< ps_costant_model::get_number_parameter() << endl;
ps_power_model * model = get_power_model(0);
model->ciao();
power_module_table.insert(std::pair<string,ps_power_model>(ciao,(*model)));
//come faccio a leggere quell'elemento e chiamare il metodo ciao() della giusta classe derivata????????????
}
ps_power_model * get_power_model(int num_of_model){
switch(num_of_model){
case 0 :
return new ps_costant_model;
break;
}
};
grazie a chi avrà la pazienza di rispondermi!!!!!
:master: :master: