Si verificano problemi di overloading dell'operatore subscript con una classe template in C++. Ho una implementazione personalizzata della classe di mappe e devo essere in grado di accedere agli elementi tramite la chiave.Problemi di overloading [] operatore con una classe template
template <typename K, typename DT>
DT& myMap<K, DT>::operator[](K key)
{
for (int i = 0; i<size; i++)
{
if (elements[i].key == key){
return elements[i].data;
}
}
}
È come sto cercando di sovraccaricare l'operatore al momento. Il compilatore non accetta il tasto K per cercare i dati. K è il tipo di dati per la chiave. Questo è archiviato in una classe separata che la classe myMap contiene in una matrice.
Quindi, se nel principale cerco di fare:
myMap<string, int> * test = new myMap < string, int > ;
test["car"] = 50;
Dice:
Error expression must have an integral or unscoped enum type
Io non sono molto sicuro di quello che è il problema.
Perché non basta usare 'myMap prova; 'e quindi' test ["car"] 'funzionerà come previsto. –
Il problema è che stai usando 'new' inutilmente, che è una cattiva abitudine che dovrebbe essere evitata in C++. Questo non è Java o C#. –