Zugriff auf struct über Zeiger
-
Hi, eine kurze Frage, die sich bestimmt sehr einfach und schnell beantworten lässt: Warum lässt sich der Array so nicht initialisieren (Code bissl vereinfacht):
struct Bla { string ID; int Xcoord; int Ycoord; //... }; //... Bla* blabla = new Bla[numberOfBlas]; for (int i = 0; i < numberOfBlas; ++i) { blabla[i]->Ycoord = i; // geht nicht (*blabla[i]).Xcoord = i; // das geht auch nicht //... }Der böse Compiler sagt bei dem letzteren "
error C2819: type 'Bla' does not have an overloaded member 'operator ->'"
Wo ist das beknackte Problem??
-
blabla[i] ist bereits vom Typ Bla, das musst du nicht weiter dereferenzieren.
-
-
Dann überlege ich: wenn blabla[i] schon ein Zeiger ist, warum wird dafür kein "->"-Operator benötigt??
Außerdem ist IntelliSence bescheuert, weil der das nicht erkannt hat. Und ich dachte deswegen, dass es mit dem "."-Operator nicht geht.
-
[cpp]#struct Bla
{
string ID;
int Xcoord;
int Ycoord;
//...
};//...
Bla* blabla = new Bla[numberOfBlas];for (int i = 0; i < numberOfBlas; ++i)
{
blabla[i].Ycoord = i; // geht
blabla[i].Xcoord = i; // das geht auch
//...
}
-
NNN schrieb:
[...]
Das habe ich schon dank Bashar verstanden. Ich versteh nur nicht, warum das so sein muss.
-
Der []-Operator dereferenziert automatisch.