PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : main.cc:33 request for member 'getLevel' in 'a', which is of non-aggregate ...



Ing0s
28-07-2000, 16:18
Hallo zusammen !!
Ich wollte ein kleines Spiel in C++ schreiben.
Beim compilieren bekam ich folgenden Fehler:

main.cc:33 request for member 'getLevel' in 'a', which is of non-aggregate type 'player *'

Hier ist main.cc:
/****************/

#include "player.h"
int main(int argc, char *argv[]){
player *a;
a=new player();
 a.getLevel(); //sagen wir mal, daß wäre Zeile 33 ... http://www.linuxforen.de/ubb/wink.gif
return(0);
}
/****************/

//player.h

class player{
private:
int level;

public:
player();
int getLevel();
void operator ++();
};

/****************/

//player.cc
#include "player.h"

player: http://www.linuxforen.de/ubb/tongue.giflayer(){level=0;}
int player::getLevel(){return level;}
void player: http://www.linuxforen.de/ubb/redface.gifperator ++(){level++;}

Was bedeutet die Fehlermeldung ? Wo ist der Fehler ? Welcher Fehler ?
Klappt das mit dem ++ operator wie ich mir das vorstelle ?

Danke für eure Hilfe !!

MfG Dirk

Ing0s
31-07-2000, 13:48
Hi.
Ich habe den Fehler selbst gefunden http://www.linuxforen.de/ubb/smile.gif

Aber wo ist der Unterschied ??

player *a=new player();
player b;

a->setLevel(4);
b.setLevel(4);

MfG Dirk

08-08-2000, 10:18
Hallo!

Der Unterschied liegt darin, ob Du einen Zeiger auf ein Objekt oder direkt eine Objektinstanz einfuehrst.

Im Falle von
myType *myObject01
deklarierst Du kein Objekt, sondern einen Zeiger auf ein Objekt. Um diesem Zeiger ein Objekt zu zu weisen, musst Du das mit
myObject01 = new myType()
machen. Dann muss bei jedem Zugriff auf ein Attribut / eine Methode mit der Zeiger-Notation gearbeitet werden, also z.B. myObject01->getValue().

Lautet die Deklaration myType myObject02, so wird direkt ein Objekt instanziiert. Es kann dann ueber die Punkt-Notation auf Attribute / Methoden zugegriffen werden, also z.B.
myObject02.getValue().

Beste Gruesse,
Oliver

[Dieser Beitrag wurde von o.bildesheim am 08. August 2000 editiert.]

Ing0s
08-08-2000, 10:22
Ist mir mitlerweile auch klar geworden http://www.linuxforen.de/ubb/smile.gif, aber trotzdem danke für deine mühe !!

MFG Dirk