Mam problemy z przeciążeniem operatora indeksu dolnego klasą szablonu w C++. Mam niestandardową implementację klasy mapy i muszę mieć dostęp do elementów za pomocą klucza.Problemy z przeciążaniem operatora [] z szablonem klasy
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;
}
}
}
To jak próbuję przeciążać operatora w tej chwili. Kompilator nie akceptuje klawisza K, aby wyszukać dane. K jest typem danych dla klucza. Jest przechowywany w oddzielnej klasie, którą klasa myMap zawiera w tablicy.
Więc jeśli w głównym staram się zrobić:
myMap<string, int> * test = new myMap < string, int > ;
test["car"] = 50;
Mówi:
Error expression must have an integral or unscoped enum type
Nie jestem pewien, co jest problem.
Dlaczego nie wystarczy użyć 'MyMap testu; 'a następnie' test ["car"] 'będzie działać zgodnie z oczekiwaniami. –
Problem polega na tym, że niepotrzebnie używasz "nowego", co jest złym nawykiem, którego należy unikać w C++. To nie jest Java ani C#. –