Pointerfrage
-
Ich bin in Sachen Pointer noch was wackelig auf den Beinen und brauche Hilfe:
struct afterCommaCounter { int counter; int iValue; afterKommaCounter* pPossiblePartners[5]; }; afterKommaCounter oddPrices[50]; afterKommaCounter evenPrices[50];Jeder Preis hat fünf Partner aus dem jeweils anderem Array. Die such ich und möchte die fünf Zeiger dann auf die Partner zeigen lassen. Das mache ich so:
if((iAfterKomma % 2)==0)// Pärchen sollen gegenseitig auf sich zeigen { evenPrices[iIndex].pPossiblePartners[j] = &oddPrices[iMatchesWith]; oddPrices[iMatchesWith].pPossiblePartners[j] = &evenPrices[iIndex]; } else { oddPrices[iIndex].pPossiblePartners[j] = &evenPrices[iMatchesWith]; evenPrices[iMatchesWith].pPossiblePartners[j] = &oddPrices[iIndex]; }An der Stelle bin ich mir schon nicht sicher, ob ich das richtig mache. Um es zu überprüfen versuche ich die Partner auszugeben. Ich will die Zeiger in dem einem Array benutzen um iValue in dem anderen Array auszugeben:
cout << evenPrices[i].*pPossiblePartners[j].iValue;Bekommen tue ich nur eine Fehlermeldung:
` pPossiblePartners' undeclared (first use this function)Das ist zwar richtig, aber die Funktion ist ein Konstructor, der vorher eine Funktion aufgerufen hat die in beiden Arrays jeden Member jedes Structs brav initiiert hat.
Mir wäre schon geholfen, wenn man mir sagen könnte, ob die Zeilecout << evenPrices[i].*pPossiblePartners[j].iValue;im Prinzip richtig ist, dann wüßte ich wo ich weitersuchen muss.
Danke schon mal.
-
Die Klammerungsregulung von * und . ist miserabel - und schon ohne die zusätzlichen Arrays mußt du Klammern setzen. Darum gibt es auch den Operator -> als Kombination aus Dereferenzieren und Memberzugriff:
cout << evenPrices[i].pPossiblePartners[j]->iValue;
-
Das ging schnell. Das wars. Vielen Dank.