Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

MAX

Senior Schreiberling

  • "MAX" is male
  • "MAX" started this thread

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

1

Wednesday, January 8th 2003, 10:51am

Programmieren III (Aufgabe 10)

Hallo!!!
Beim Kompilieren des Quelltextes der Aufgabe 10, tratt bei mir folgender Compiler Fehler auf:
Datei matrix.cpp, Zeile 123, im Konstruktor Matrix(int Ze, int Sp), folgende Zeile hat bei mir der Compiler nicht akzeptiert:
Komp = new Vektor[Ze](Sp,S);

Fehlermeldung: error C2538: new : Angabe der Initialisierung fuer Felder nicht moeglich

Ich benutze MS Visual C++ 6.0

Wo liegt das Problem??? Warum kann der Compiler das Feld nicht initialisieren???
mfg
MAX

Irishman

Trainee

  • "Irishman" is male

Posts: 39

Date of registration: Mar 24th 2002

Location: Hannover

2

Wednesday, January 8th 2003, 11:18am

Weil Visual C++ in vielen Dingen nicht ganz dem C++-Standard entspricht.

Wenn man dort z.B. eine normale for-Schleife benutzt
for(int i=0;i<10;i++) {}
,ist i nach der Schleife noch gültig, obwohl das ja nicht so sein dürfte...

Auf anderen Compilern würde der Code, den Du angesprochen hast, wahrscheinlich problemlos übersetzt werden.

Ich glaube, man sich mit Visual C++ nur so aushelfen, daß man erst das Feld dynamisch erstellt

Komp = new Vektor[Ze];

,dann das Feld durchlaufen und den Konstruktoraufruf durch eine selbstgeschriebene Funktion ersetzt, die die Werte des jeweiligen Vektors richtig initialisiert.

for(int i=0;i<Ze;i++)
Komp.set(Sp,S);

So müßte das Problem mit Visual C++ eigentlich behoben sein (habe es noch nicht selbst ausprobiert).

paradroid

Junior Schreiberling

Posts: 231

Date of registration: Feb 28th 2002

3

Wednesday, January 8th 2003, 3:03pm

Interessant ist, dass diese Schreibweise nur in new Aufrufen gültig ist! Die statische Variante lautet nicht (wie man meinen könnte):

Vektor Komp[4](Sp,S);

sondern:

Vektor Komp[4]={(Sp,S),(Sp,S),(Sp,S),(Sp,S)};

Verwirrend.

# transmission terminated #

T2k

Erfahrener Schreiberling

  • "T2k" is male

Posts: 339

Date of registration: Oct 9th 2002

Location: da drüben, gleich dort.

Occupation: Warum? Hmm, weil ich sonst nix mit meiner Zeit anzufangen weiß :D

4

Wednesday, January 8th 2003, 3:58pm

Quoted

Weil Visual C++ in vielen Dingen nicht ganz dem C++-Standard entspricht.

nana wir wolln jetzt ma nicht behaupten, dass das hier gebrauchte new dem standard entspricht!


T2k
Die zweithäufigste Todesursache eines Soldaten ist das Gewicht seines Rückentornisters ("http://olnigg.de/" Aug05/Nr120)

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

5

Wednesday, January 8th 2003, 4:14pm

nimmt doch den Borland C++ Compiler 5.5, gibt kostenlos von Borlands Seite, der hält sich an die üblichen standards :)
kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"