Überladen von Konstruktoren Fehler..



  • Hallo,

    Ich GLAUBE das mein Fehler beim überladen von folgenden Konstruktoren passiert, aber ich hab keinen Plan was ich da falsch mache...

    BombPlayer::BombPlayer()
    {
    
    Code
    
    }
    
    BombPlayer::BombPlayer(Graphics *graphicsdelivery, Network &networkdelivery) : network(networkdelivery)
    {
    
    Code
    
    }
    

    und so sind sie in der HPP drin..

    BombPlayer();
    	BombPlayer(Graphics *graphicsdelivery, Network &networkdelivery);
    

    und der Fehler dazu:

    error C2758: 'BombPlayer::network' : must be initialized in constructor base/member initializer list
    

    Was mache ich falsch? wo könnte der Fehler sonst noch liegen?



  • Ich nehme mal an, der Member network ist eine Referenz? Wenn ja, muss diese natürlich initialisiert werden, dein erster Konstruktor tut das aber nicht...



  • Anfügung: Selbiges gilt für als Konstant deklarierte Membervariablen.



  • Ich muss die im ersten Konstruktor auch initialisieren auch wenn ich sie nicht brauch?



  • Ja, Referenzen müssen initialisiert werden, da sie ja nicht mehr verändert werden können. Eine nicht initialisierte Referenz ist völlig sinnfrei. Wenn du sie nicht brauchst, solltest du dir überlegen, was sie eigentlich in der Klasse verloren hat...



  • Sorry Falsch gesagt, ich brauch sie nicht immer, ich brauch sie nur manchmal...



  • Dacht ich mir; in dem Fall würde mal behaupten, dass deine Klasse in Wirklichkeit eher zwei Klassen sein sollten...

    Unabhängig davon, muss eine Referenz immer initialisiert werden.



  • Naja ich hab halt ne Spielerklasse, die die Netzwerk klasse braucht wenn ich es Starte, aber wenn ich einen 2.ten Player (Also einen Gegner habe..) dann muss ich ja nicht die Netzwerk klasse haben...

    für das brauch ich doch nich 2 Klassen, oder?



  • Wie wärs damit, einen Netzwerkspieler vom Spieler abzuleiten? Oder noch besser: Nur ein Spieler Interface zu definieren und zweimal zu implementieren, einmal als normalen Spieler und einmal als Spieler, der seinen Input per Netzwerk bekommt.



  • Hmm wie wahr wie wahr, ableiten, das hab ich bis jetzt noch nie gemacht 😃

    ach ach lernen lernen ... 😕


Anmelden zum Antworten