Ich verstehe nicht, warum in diesem Beispiel kann ich nicht ein Funktionselement zugreifen, indem dereferencing das ObjektVerwendung von Dereferenzierungsoperator in diesem Beispiel (C++)
Hier ist der relevante Teil des Codes
class Search
{
public:
void run();
private:
Result* result;
Result* extractResults()
};
die extractResults() ist definiert als
Result* Search::extractResults()
{
Result* ris;
//as soon as i know the size, i initialize ris
ris = new Result[numOfResults];
return ris;
}
Innerhalb des run() Funktion folgt, i extractResults Aufruf einen Zeiger auf das interne ris Objekt
zu erhaltenresult = extractResults();
Nun, ich würde erwarten, dass das "Ergebnis" für den Zugriff auf Objekt, innen run(), wie folgt aus:
result[4]->doSomething();
Aber es funktioniert nicht, ich
verwenden müssenresult[4].doSomething();
Warum ist das?
EDIT
Ok, modifizierte ich den Code, um den Dereferenzierungsoperator nutzen zu können. Ich weiß, dass es in dieser Situation nicht notwendig ist, Zeiger zu verwenden, ich habe es einfach als Übung benutzt.
class Search
{
public:
void run();
private:
Result** resultPP;
Result* resultP;
Result* extractResults()
};
Result* Search::extractResults()
{
Risultato* ris;
//as soon as i know the size, i initialize ris
ris = new Risultato[numOfResults];
return ris;
}
Innerhalb der Funktion run() i
resultP = extractResults();
resultPP = &resultP;
Jetzt können Sie endlich:
resultPP->doSomething();
Ich weiß, es ist chaotisch, ich es einfach tun wollte, wie diese, als eine Möglichkeit, vom Lernen. danke!
Da result [4] keinen Zeiger zurückgibt, ist es ein Verweis auf ein Element des Arrays. (In diesem Fall ist das Ergebnis [4] gleichbedeutend mit '* (Ergebnis + 4)' – Borgleader