2016-04-07 13 views
-2

Ich habe zwei Klassen erstellt, die man Pair nennt (da data members ein dynamisch zugewiesenes Array von Zeichen für KEY und double für value hat) und die andere Collection (eine Sammlung von Paaren, als Datenelemente hat sie ein dynamisch zugewiesenes Array von Paare und eine int-Variable für die sizeOfPairs). Die Collection-Klasse sollte über eine Methode verfügen, die einen Zeiger auf die ersten Objekte mit dem angegebenen Schlüssel zurückgeben soll, wenn ein solches Objekt nicht existiert, gibt NULL-Zeiger zurück. Dies ist, wie weit ich mit dieser Methode gekommen bin, aber ich bekomme einen Fehler (Fehler: Indirection benötigt Zeiger Operand ('Paar' ungültig)) für die 4. Zeile. Ist die Art, wie ich einen Zeiger auf ein Objekt zurückgebe, korrekt?Wie gebe ich einen Zeiger auf ein Objekt zurück?

Pair *find(const char *key){ 
     for(int i = 0; i < sizeOfPair; ++i){ 
     if(pair[i].getKey() == key){ 
      return *pair[i]; 
     }else{ 
      return NULL; 
     } 
    } 
} 
+1

Verwenden Sie den Adressoperator '&' nicht der Dereferenzierungsoperator '*'. – callyalater

+0

Sie sind wahrscheinlich besser dran mit 'std :: multimap' statt zu versuchen, diesen Container selbst zu implementieren. –

+0

@SvenMarnach Können Sie erklären, was das ist? –

Antwort

0
Pair *find(const char *key){ 
     for(int i = 0; i < sizeOfPair; ++i){ 
     if(pair[i].getKey() == key){ 
      return pair + i; // Address of pair[i] 
     }else{ 
      return NULL; 
     } 
    } 
} 
+3

Eine andere Alternative ist 'return & pair [i];'. –

Verwandte Themen