einfaches Objekt modula instanziieren
-
Hallo zusammen,
folgendes: Ich habe eine Klasse A mit A.h und A.cpp. Desweiteren eine Klasse B mit B.h und B.cpp. Jetzt includiere ich in B.h die A.h und lege mir einen Pointer auf A *myA an. In B.cpp möchte ich nun mein Objekt myA instanziieren: *myA = new A();
Jetzt kommt die Fehlermeldung:
[C++Fehler] B.cpp(12): Cannot convert 'A *' to 'int *'.Was ist daran falsch?
lg,
blitzgeist
-
Ganz wage Vermutung,
Du musst statt
*myA = new A();
myA = new A();
schreiben...
Du legst myA doch als Zeiger an?
A *myA
Wenn Du jetzt *myA schreibst, dereferenzierst Du was an dieser Stelle keinen Sinn machen würde
Gruß Paddy
-
blitzgeist schrieb:
Jetzt includiere ich in B.h die A.h und lege mir einen Pointer auf A *myA an. In B.cpp möchte ich nun mein Objekt myA instanziieren: *myA = new A();
Da ist zumindest schonmal ein * zuviel. Korrekt wäre:
myA = new A();
-
Danke für eure schnellen Antworten. Wenn ich in B.cpp das * bei *myA = new A() weglasse, kommt zusätzlich die Fehlermedlung:
[C++Fehler] B.cpp(12): Type name expected.Wie es geht ist, wenn ich in der B.h A *myA lösche und in B.cpp schreibe:
A *myA = new A();Dann habe ich aber meine Eigenschaft für B in B.cpp deklariert und nicht in B.h, wo sie ja eigendlich hingehört.
-
Kannst Du mal die Dateien zeigen?
Bitte mit cpp tags
-
Zeig doch mal etwas mehr Code. (btw, ich hoffe, der Ausdruck
myA = new A();
steht im inneren einer Funktion (z.B. der Ctor von B))
-
@CStoll
ehm ne; myA = new A(); steht nicht im inneren einer Funktion. Ich packe es mal wohin...
-
Die Glaskugel
Das ist einfach unwahrscheinlich.....
-
...funktioniert . Ein Lob an das Forum
-
blitzgeist schrieb:
@CStoll
ehm ne; myA = new A(); steht nicht im inneren einer Funktion. Ich packe es mal wohin...Volltreffer
Zur Erklärung: Frei in der Datei darfst du nur Deklarationen (und Definitionen) stehen haben. Anweisungen müssen im Inneren einer Funktion untergebracht werden. In deinem Fall ist
A* myA=new A();
eine Definition der Variable myA (inklusive Initialisierung) undmyA=new A();
eine Anweisung (genauer: eine Zuweisung zur bereits existierenden Variablen myA).