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

1

23.12.2003, 14:52

Warum plötzlich standardkonstruktoren

Ich wundere mich etwas... habe eben lediglich eine neue klasse zu meinem projekt hinzugefügt und als ich es ausführen wollte spuckt er mir auf einmal drei fehlermeldungen aus: kein geeigneter standardkonstruktor

ich hatte aber vorher für die structs auch keine standardkonstruktoren und es funktionierte wunderbar.. warum will er die aufeinmal haben!?

Quellcode

1
2
3
4
5
6
7
#pragma pack(1)
struct SLevel
{
    sbVertex    vertices[193];
    int         indices[966];
};
#pragma pack()


Quellcode

1
2
3
4
5
6
7
struct sbVector3
{
    float x,y,z;

    inline sbVector3(const float px,const  float py,const float pz) : x(px), y(py), z(pz){};
    inline operator = (const sbVector3& t) {x = t.x; y = t.y; z = t.z;};
};


und noch ähnliche structs... wäre natürlich kein problem überall einen standardkonstruktor einzubaun, aber warum macht er das nicht mehr von alleine ???

Maxi

Treue Seele

Beiträge: 136

Wohnort: Müncheberg

Beruf: Ich muss noch in die Schule

  • Private Nachricht senden

2

23.12.2003, 14:54

wenn du einen Konstruktor definiertst, baut der Compiler keine Standarddinger mehr ein
Gruß, Maxi

Hier, die Homepage von meiner Band:
www.maxis-house.de

Könnt euch unsere ersten Songs saugen...

3

23.12.2003, 15:02

Zitat von »"Maxi"«

wenn du einen Konstruktor definiertst, baut der Compiler keine Standarddinger mehr ein


ja aber im oberen struct ist doch gar keiner definiert

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

23.12.2003, 21:32

der compiler baut immer einen wenn ein default constructor nicht selbst erstellt wurde!

nebenbei: struct hat keine con und destructoren, da es sowas in ANSI C nicht gab. drum benutze besser class :)

5

23.12.2003, 21:47

Klassen und Strukturen sind in C++ im Prinzip nach gleich. Bei Klassen ist nur alles Privat und bei Strukturen alle Public.

Du bekommst deshalb den Fehler weil du keinen Standardkonstruktor fuer deine sbVector3 Struktur hast. Denn sobald man einen Konstruktor Definiert fuegt der Compiler auch nicht mehr den Std. Konstruktor ein. Das macht er NUR dann wenn man keine Konstruktoren Definiert.

Wenn du eine Instanz von der Struktor SLevel erzeugst und du ihm nicht angibst welchen Konstruktor von sbVector3 benutzen will, benutzt er den Std. Konstruktor. Du hast aber nur keinen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

6

24.12.2003, 13:38

was heisst denn folgendes?

Quellcode

1
2
3
pragma pack(1)
....
pragma pack()

7

24.12.2003, 21:30

Das heisst das du deinen Codeabschnitt in 1Byte Schritte Optimiert haben willst. Normal sind 4Byte das die heutigen CPUs damit besser umgehen koennen. Obwohl wir darueber auch schon heftig Diskutiert haben. Ist irgendwo in diesem Forum, einfach mal nach AMD oder CPU suchen ;)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige