Nuke
17-10-2004, 16:48
Hi.
Ich versuche gerade eine Schwarm-Simulation zu programmieren.
Da der Anwender die Anzahl der Schwärmlinge eingeben können soll, brauche ich ja ein dynamisches Array. Jeder Schwärmling ist dabei ein Objekt von meiner Klasse KSchwarm. Diese enhält erst mal nur Positionsinformationen, welche man auslesen und setzen kann.
Wie lege ich jetzt ein Array von dem Objekt an? Das Objekt befindet sich wiederum in einem Objekt, soll aber nicht weiter nach außen. D.h. Klasse KSchwarm gibt es nur für die Klasse KFeld.
Ich bekomme den Fehler:
error: base operand of `->' has non-pointer type `KSchwarm'
Hier mal ein Code-Auszug (Klasse ein bisschen gekürzt). Irgendwie habe ich gerade einen Blackout. ;)
class KFeld
{
private:
KSchwarm *Boid;
public:
KFeld();
~KFeld();
void erzeugeSchwarm(int anz);
void entferneSchwarm();
};
KFeld::~KFeld()
{
delete[] Boid;
}
void KFeld::erzeugeSchwarm(int anz)
{
Boid = new KSchwarm[anz];
for(int i=0;i<anz;i++)
{
//Hier der Fehler:
Boid[i]->setzePosition((float)(rand()%hoehe),(float)(rand() %breite));
}
}
void KFeld::entferneSchwarm()
{
delete[] Boid;
}
Kann mir bitte einer sagen was ich falsch mache? :o
Danke. :)
Ich versuche gerade eine Schwarm-Simulation zu programmieren.
Da der Anwender die Anzahl der Schwärmlinge eingeben können soll, brauche ich ja ein dynamisches Array. Jeder Schwärmling ist dabei ein Objekt von meiner Klasse KSchwarm. Diese enhält erst mal nur Positionsinformationen, welche man auslesen und setzen kann.
Wie lege ich jetzt ein Array von dem Objekt an? Das Objekt befindet sich wiederum in einem Objekt, soll aber nicht weiter nach außen. D.h. Klasse KSchwarm gibt es nur für die Klasse KFeld.
Ich bekomme den Fehler:
error: base operand of `->' has non-pointer type `KSchwarm'
Hier mal ein Code-Auszug (Klasse ein bisschen gekürzt). Irgendwie habe ich gerade einen Blackout. ;)
class KFeld
{
private:
KSchwarm *Boid;
public:
KFeld();
~KFeld();
void erzeugeSchwarm(int anz);
void entferneSchwarm();
};
KFeld::~KFeld()
{
delete[] Boid;
}
void KFeld::erzeugeSchwarm(int anz)
{
Boid = new KSchwarm[anz];
for(int i=0;i<anz;i++)
{
//Hier der Fehler:
Boid[i]->setzePosition((float)(rand()%hoehe),(float)(rand() %breite));
}
}
void KFeld::entferneSchwarm()
{
delete[] Boid;
}
Kann mir bitte einer sagen was ich falsch mache? :o
Danke. :)