Gebäude anhand von Eigenschaften erkennen

KAY

Mitglied
Hallo

Ich hätt da mal ne Frage.
Also und ein Kumpel von mir wir machen ein Game. So nun bau ich am Editor und hab folgendes Problem:

ich hab das:

struct Gebaeude
{
LPDIRECTDRAWSURFACE7 Aussehen;
int number;
int x;
int y;
};

und da is noch mehr dabei, was jetzt aber nicht wichtig ist. Mit der Strukur erstelle ich Gebäude. So nun will ich das im Editor anzeigen lassen. Da die Anzahl der Gebäude aber bei jeder Map unterschiedlich ist will ich das das Prog erst die Gebäude zählt, dann das Gebäude anhand der Nummer ausfindig macht und mir allen Eigenschaften (Position, Surface...) richtig darstellt.

Ich bin jetzt schon soweit:

for(i=0;i<Nummer;i++)
{
if(this.number==i)
{
lpDDSPrimary->BltFast this.x,this.y,this.Aussehen,NULL,DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
}
}

aber das geht ja mit dem this.number nicht.

Wie soll ich das machen??
 
Definier das Gebäude doch einfach als Klasse, dann klappt das auch mit this:
Code:
class CGebaeude
{
public:
    LPDIRECTDRAWSURFACE7 Aussehen;
    int x;
    int y;
    int nummer;
}
 
is das dann wie bei java mit den klassen, das ne klassen objekte bildet (also wie bei struct).

und pack ich dann die unterscheidung als public-methode in die klassendefinition oder?
 
Objekte sind Instanzen einer Klasse, ungefähr so wie eine Variable eine Instanz von einem Datentyp ist. Nur mit dem Unterschied, dass eine Klasse mehr Möglichkeiten bietet als ein normaler Datentyp. Das ist eigentlich bei so ziemlich allen objektorientierten Programmiersprachen gleich (mit Ausnahme von Visual Basic :rolleyes: ).
Aber ein normales Struct hat nichts mit Objekten zu tun, weil das ja eigentlich nur ein zusammengesetzter Datentyp ist. public, private und so gibt's bei structs nicht, genau wie this da (soweit ich weiss) nicht funktionieren wird.
 
doch this geht wenn de z.B. so was hast

struct tester{
int nummer;
};

tester x;
x.nummer=5;

und dann:

void test(tester aktueller_tester)
{
cout<<this.nummer;
}

void test(x);

dann wird 5 ausgegeben,da aktueller_tester dann gleich x ist. so funktioniert this mit struct.
 
Code:
void test(tester aktueller_tester) 
{ 
    cout << this.nummer; 
}
Wieso sollte da das richtige Ergebnis rauskommen? Das macht doch überhaupt keinen Sinn, weil this immer auf die aktuelle Instanz der Klasse zeigt. Du übergibst der Funktion zwar dein Struct, aber damit machst Du gar nichts.
Der this-Zeiger kann nur auf etwas zeigen, wenn er innerhalb einer Klasse benutzt wird. Auf was soll der this-Zeiger auch bei einem Struct zeigen?
Code:
class WerBinIch
{
public:
    void IchBin();
};

void WerBinIch::IchBin()
{
    cout << this << endl;
}

int main()
{
    WerBinIch x, y;
    x.IchBin();
    y.IchBin();
    return 0;
}
 
Okay, ich hab noch mal nachgeschlagen und per Definition ist ein Struct nichts anderes als eine Klasse, bei der alle Felder öffentlich (public) deklariert sind. Wenn Stroustrup das schreibt, wird das schon stimmen. ;)
Trotzdem würde ich nicht mit this auf ein Struct verweisen. :rolleyes:
 

Neue Beiträge

Zurück