Ciao.
Ho un nuovo problema nel progetto che sto sviluppando. Ho una classe definita in questo modo:
Codice:
class Dns{
private:
vector< int > proxy;
vector< Provider > provider;
map< string, vector<int> > mapper;
vector< Tabella > table; Client-Proxy
public:
Dns(); // costruttore di default
Dns(vector<int>& , vector<Provider>& );
void Associations(int, int);
void stampa_mapper(int []);
int RequestDNS(const int, const string&);
};
La map di nome mapper viene riempita ciclicamente nella funzione Associations tramite un'istruzione del tipo
Codice:
mapper.insert(pair<string,vector<int> >(provider[i].nome_provider,tmp));
stampa_mapper è la funzione che mi stampa il mapper ed è fatta così:
Codice:
void Dns::stampa_mapper(int nproxy[]){
map<string,vector<int> >::iterator it_first;
vector<int>::iterator it_second;
for(it_first=mapper.begin(); it_first != mapper.end(); ++it_first){
cout << it_first->first << endl;
cout << "Proxy in questo provider: " << it_first->second.size() << endl;
for(it_second=it_first->second.begin(); it_second != it_first->second.end(); ++it_second)
cout << *it_second << endl;
system("PAUSE");
}
}
Ora il problema viene con la RequestDNS(). Praticamente per l'iteratore eseguo quasi la stessa operazione che ho fatto in stampa_mapper (cioè creo un'iteratore map< string, vector<int> >::iterator imm) e poi provo a fare
imm = mapper.find(una certa stringa);
Controllando con gdb l'indirizzo dell'iteratore vedo che è tutto a posto. Solo che se faccio imm->first o imm->second mi dice "There is no member or method named first (o second)". Non riesco a capire per quale motivo!
Ho bisgono del vostro aiuto. Grazie.