Objekte erstellen
-
Wolltest du vielleicht nicht eher das hier?
Fahrzeug * porsche = new Sportwagen();
-
SeppJ schrieb:
(Technische Anmerkung: Wozu hast du Konstruktoren, wenn die alle leer sind?)
Damit das Binary kleiner wird?
-
technischerdienst schrieb:
SeppJ schrieb:
(Technische Anmerkung: Wozu hast du Konstruktoren, wenn die alle leer sind?)
Damit das Binary kleiner wird?
Ich glaub die Optimierung des Compilers würde das Zeug sowieso weg tun.
Außerdem reden wir hier von sehr kleinen Speichermengen.
-
KMT schrieb:
Wolltest du vielleicht nicht eher das hier?
Fahrzeug * porsche = new Sportwagen();Wenn ich das mache, habe ich auch wieder ein Problem, dass der Compiler meckert.
error C2248: "Sportwagen::Sportwagen": Kein Zugriff auf private Member, dessen Deklaration in der Sportwagen-Klasse erfolgte.
Was ich nicht so ganz verstehe, denn ich habe doch gar keine privaten Member angelegt?!
Nehme ich allerdings
Sportwagen * porsche = new Fahrzeug();gibt es folgende Fehlermeldung
*error C2440: 'Initialisierung': 'Fahrzeug *' kann nicht in 'Sportwagen ' konvertiert werden
SeppJ schrieb:
(Technische Anmerkung: Wozu hast du Konstruktoren, wenn die alle leer sind?)
Die Konstruktoren haben hier erstmal keine große Bedeutung. Wichtig war mir die Ausgabe der Musikdateien.
-
Du hast vergessen bei Sportwagen
public:zu schreiben. Klassen sind von Haus aus private, wenn du nicht public: machst.
Schreib einfach mal public: über die Member im Header, wie bei Fahrzeug.
-
Ohrfeigenbeauftrage schrieb:
error C2248: "Sportwagen::Sportwagen": Kein Zugriff auf private Member, dessen Deklaration in der Sportwagen-Klasse erfolgte.
Was ich nicht so ganz verstehe, denn ich habe doch gar keine privaten Member angelegt?!
Doch, da du in Sportwagen und LKW nicht public vor die Funktionen geschrieben hast. Beim Traktor ist es richtig.
-
IrgendeinName schrieb:
technischerdienst schrieb:
SeppJ schrieb:
(Technische Anmerkung: Wozu hast du Konstruktoren, wenn die alle leer sind?)
Damit das Binary kleiner wird?
Ich glaub die Optimierung des Compilers würde das Zeug sowieso weg tun.
Außerdem reden wir hier von sehr kleinen Speichermengen.
Da brauchst du nix zu glauben, das war ein Scherz (hoffe ich zumindest, denn ich kann den Witz darin nicht finden)
-
Sportwagen * porsche = new Fahrzeug();Wenn ich das mache, habe ich folgende Meldung:
*
error C2440: 'Initialisierung': 'Fahrzeug *' kann nicht in 'Sportwagen ' konvertiert werden 38Mache ich aber
Fahrzeug * porsche = new Sportwagen();hat er einen Linkerfehler
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PlaySoundW@12" in Funktion ""public: virtual void __thiscall Sportwagen::Fahrgeraeusch(void)" (?Fahrgeraeusch@Sportwagen@@UAEXXZ)".
Natürlich habe ich meinen Header angepasst mit
public:
-
Ohrfeigenbeauftrage schrieb:
[
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PlaySoundW@12" in Funktion ""public: virtual void __thiscall Sportwagen::Fahrgeraeusch(void)" (?Fahrgeraeusch@Sportwagen@@UAEXXZ)".Da fehlt dir noch die lib in der PlaySound implementiert ist. z.Bsp. die Winmm.lib.
-
Braunstein schrieb:
Da fehlt dir noch die lib in der PlaySound implementiert ist. z.Bsp. die Winmm.lib.
Vielen Dank, das war der Fehler!