Salve a tutti,
ho il seguente metodo di una classe:
codice:
template<class K, class E>
void hash_table<K,E>::insert(const mypair<const K, E>& the_pair)
{
// search the table for a matching element
int b = search(the_pair.first);
// chack if matching element found
if (table[b] == NULL){
// no matching element and table not full
table[b] = new mypair< const K, E > (the_pair);
dsize++;
} else {
// check id duplicate or table full
if (table[b]->first == the_pair.first)
// duplicate, change table[b]->second
table[b]->second = the_pair.second;
else{
// table is full
// throw the exception hash_table_full();
}
}
}
nella seguente riga fa riferimento alla struct mypair:
codice:
table[b] = new mypair< const K, E > (the_pair)
La struttura è la seguente:
codice:
template<class K, class E>
struct mypair {
// data member
K first;
E second;
// methods
mypair(){}
mypair(mypair<const K,E>& the_pair){
first = the_pair.first;
second = the_pair.second;
}
};
Il compilatore però mi da errore dicendomi:
codice:
Type no matching function for call to 'mypair<const std::basic_string<char>, std::basic_string<char> >::mypair(const mypair<const std::basic_string<char>, std::basic_string<char> >&)' hash_table.h /Dizionari_2 line 184 C/C++ Problem
Non riesco a capire cos'è che no gli va a genio. Ho provato anche a cambiare la riga incriminata del metodo in:
codice:
table[b] = new mypair< const K, E > (& the_pair)
Ma nulla, da sempre lo stesso errore. Sapreste dirmi in cosa sbaglio? perchè ci sto impazzendo da ore.
Vi ringrazio in anticipo,
Neptune.