Konstruktor



  • #include <iostream>
    
    using namespace std;
    
    class test
    {
    
    public:
    
    	test(int wert1, int wert2) 
    	{
    
    		eins=wert1;zwei=wert2;
    
    	}
    
    private:
    	int eins, zwei;
    
    };
    
    void main(void)
    {
    
    test y;
    
    }
    

    Es erscheint folgende Fehlermeldung:

    Kein geeigneter Standardkonstruktor verfügbar

    edit: code-tags zugefügt



  • Dein Konstruktor hat doch 2 Argumente, also musst du z.B.:

    test y(123,120);
    

    schreiben.
    Oder noch einen "leeren" Konstruktor definieren, ohne die 2 Argumente.

    MfG
    Stromberg



  • Oder Standardwerte:

    test::test(int wert1 = 2193, int wert2 = 832) // ...
    

    Dann kannst du einen, 2, oder gar keinen Parameter mitgeben! 🙂



  • 20913123 schrieb:

    Oder Standardwerte:

    test::test(int wert1 = 2193, int wert2 = 832) // ...
    

    Dann kannst du einen, 2, oder gar keinen Parameter mitgeben! 🙂

    Die Standard-Werte gibt man aber bei der Deklaration der Fkt an und nicht bei der Definition:

    class test
    {
      int wert1;
      int wert2;
    public:
      test(int w1 = 123, int w2 = 234);
    };
    
    test::test(int w1, int w2)
    {
      wert1 = w1;
      wert2 = w2;
    }
    

    Was du dir in diesem Zusammenhang mal angucken könntest:
    - Initialisierungsliste
    - das Schlüsselwort explicit

    und die komischen Variablennamen, die 0 aussagen (wert1/wert2) sind hoffentlich nur hier im Forum und nicht in deinem eigenen Quelltext so?!

    bb



  • Danke erstmal für die vielen Antworten.

    Heißt das also , sobald ich einen Konstruktor mit 2 Parametern ohne Defaultwerte anlege muss ich auch einen Defaultkonstruktor der keine Parameter hat anlegen. Eigentlich gibt es ja schon einen impliziten Konstruktor der aufgerufen wird, wenn man selber keinen Konstruktor definiert. Aber der wird wohl nicht mehr aufgerufen wenn man selber einen mit beliebiger Parameterliste anlegt.



  • blurry333 schrieb:

    Heißt das also , sobald ich einen Konstruktor mit 2 Parametern ohne Defaultwerte anlege muss ich auch einen Defaultkonstruktor der keine Parameter hat anlegen. Eigentlich gibt es ja schon einen impliziten Konstruktor der aufgerufen wird, wenn man selber keinen Konstruktor definiert. Aber der wird wohl nicht mehr aufgerufen wenn man selber einen mit beliebiger Parameterliste anlegt.

    Richtig, den gibt es nur solange man keinen eigenen hat, sobald man einen eigenen hat muß man ihn selbst dazuschreiben wenn man ihn weiterhin haben will.


Anmelden zum Antworten