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

01.08.2007, 14:23

Initialisierungsfunktion oder Konstruktor

Siehe Thema.

C-/C++-Quelltext

1
2
3
4
5
void Texture::Init(const std::string& fname) {
    if (error) {
        throw std::runtime_error("Fehler");
    }
}


oder

C-/C++-Quelltext

1
2
3
4
5
Texture::Texture(const std::string& fname) {
    if (error) {
        throw std::runtime_error("Fehler");
    }
}


Es geht vor allem um die Ausnahme.
Mein Projekt: Rise of the Sylvan

2

01.08.2007, 14:28

Macht für mich beides keinen Sinn.

error wurde bei beiden nicht initialisiert, wird aber trotzdem abgefragt.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

01.08.2007, 14:35

Wenn du eine Ausnahme beim konstruieren wirfst hast du ein unfertig konstruiertes Objekt und ggf mehr Stress als wenn du das Objekt über eine Methode initialisierst und diese eine Ausnahme wirft. Musst du selbst wissen wie du das behandelst.
@D13_Dreinig

4

01.08.2007, 16:07

@David_pb
thx

@chriss
War nur n Beispiel. :) Es geht darum, was sinnvoller ist und nicht, ob error initialisiert wurde.
Mein Projekt: Rise of the Sylvan

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

5

01.08.2007, 17:32

Konstruktoren dürfen laut C++ Standard keine Exceptions werfen, auch wenn das in z.B VS möglich ist!
Also würde ich Möglichkeit 1 nehmen.

mfg Philipp

6

01.08.2007, 17:40

@Phil_GDM
Das wusste ich nicht. Hab im Internet so ein paar recht eigenartige Konstruktionen entdeckt, bei denen der Konstruktor Ausnahmen wirft. Ich bleib dann doch lieber beim Standard.
Mein Projekt: Rise of the Sylvan

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

01.08.2007, 18:02

Zitat von »"Phil_GDM"«

Konstruktoren dürfen laut C++ Standard keine Exceptions werfen, auch wenn das in z.B VS möglich ist!
Also würde ich Möglichkeit 1 nehmen.

Ich habe mal danach gesucht, aber nichts gefunden.
Kannst du mir eine Quelle zeigen, wo steht, dass es verboten ist?

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

8

01.08.2007, 18:26

Leider nicht, hab es vorgestern in einem dieser Bücher gelesen soweit ich mich erinnere:

GameProgramming Gems 3
oder
Modern C++ Design

mfg Philipp

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

01.08.2007, 19:06

Naklar dürfen Konstruktoren Ausnahmen werfen. Was wenn eine Funktion innerhalb des Konstruktors eine Ausnahme wirft? Das geht und nicht nur in VC++.
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

10

01.08.2007, 19:14

Zitat von »"David_pb"«

Wenn du eine Ausnahme beim konstruieren wirfst hast du ein unfertig konstruiertes Objekt und ggf mehr Stress als wenn du das Objekt über eine Methode initialisierst und diese eine Ausnahme wirft.

Gibt es da Probleme, abgesehen davon, dass der Konstruktor nicht wie geplant ausgeführt wird und dann evtl Membervariablen nicht initialisiert sind?

Werbeanzeige