Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

31

15.03.2008, 12:49

So um das mal klar zu Stellen. Ab C99 ist geregelt, dass

C-/C++-Quelltext

1
2
3
4
int size = 0;
printf("Enter size of array: ");
scanf(%d, &size);
char data[size];
gültiges C ist. Nun ist C++ aber nicht wie viele denken ein 1 : 1 abklatsch von C mit OOP drin, sondern es ist etwas anders. Außerdem ist C++ eher auf C98 zurück zu führen. Demnach ist obiger Code kein Standard C++ Code. z.B. std::vector könnte für das Problem genutzt werden, wobei dort ja auch die Größe nachträglich verändert werden kann usw. (demnach einiges drin ist, was ein normaler Array nicht bietet).

Es gibt allerdings Compiler, die

C-/C++-Quelltext

1
2
3
4
5
std::size_t size(0);
std::cout << "Enter size of array: ";
while (!(std::cin >> size)) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  }

char data[size];
erlauben. Ein Beispiel dafür ist der G++, mit dem viele arbeiten. mit pedantic flag, erlaubt aber auch dieser es nicht, weil es eben kein Standard ist, sondern eine Compiler eigene Erweiterung. Davon gibt es auch in anderen Compilern welche. z.B. beim VC++.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

32

28.03.2008, 13:40

@ Stir X:

Das Kapitel mit den Vektoren habe ich erst gestern gelesen (weil ich auf den Rat von Faule Socke hin, wieder das Buch (C++ für Spieleprogrammierer) gelesen habe.

=> Die Idee habe ich dann auch gehabt.

Allerdings kenne ich mich in Developers Code nicht so ganz aus (eigentlich so gut wie gar nicht ;))
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

NicoWe

Treue Seele

Beiträge: 126

Wohnort: Bielefeld / NRW

  • Private Nachricht senden

33

28.03.2008, 14:34

Ähm, nee?

Bei

C-/C++-Quelltext

1
2
3
int i;
cin>>i;
int foo[i];

müsste VC++ einen Fehler geben(den du offensichtlich auch hattest)! VC++ nimmt nur Arrays mit konstanten, also z.B

C-/C++-Quelltext

1
int foo[256]

oder

C-/C++-Quelltext

1
2
#define foofoo 256
int foo[foofoo]

Das heisst, wie meine Vorposter schon so oder so ähnlich gesagt haben:
du brauchst new[] und delete[]. Darauf kannst du wie auf normale arrays mit foo[foofoo] zugreifen. Der Vorteil bei Vektoren ist allerdings dass du noch ein paar zusatzfunktionen hast die dir z.B das sortieren des ganzen erlauben. Also meine empfehlung: Vektoren :D
Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
ohne seine Begeisterung zu verlieren.
-Winston Churchill-

Werbeanzeige