Übergeben von Variablen an Konstruktor von einer Klasse in einem Classmember-Struct



  • Möchte eine Variable an einen Konstruktor übergeben. Das ja noch nicht schwehr.
    Aber nun ist dieser in einem Struct und dieses Struct ist in einer Klasse. Wenn ich es so mache, wie ich mir das Vorstelle, sagt mein Kompiler:

    error C2059: Syntaxfehler : '.'

    Mein Code:

    ////////////////////////////////////////////////////////////\\///////////////////////////////////////////////////////////////
    // h. file
    class CMeineKlasse
    {
      CMeineKlasse(int nTest);
    };
    
    class CTestKlasse
    {
     CTestKlasse(void);
    
     struct sTest
     {
       CMeineKlasse Klasse;
     }m_IchWillEineKonstruktorVariable;
    };
    ////////////////////////////////////////////////////////////\\///////////////////////////////////////////////////////////////
    
    ////////////////////////////////////////////////////////////\\///////////////////////////////////////////////////////////////
    // .cpp File
    CMeineKlasse::CMeineKlasse(int nTest)
    {
    }
    
    CTestKlasse::CTestKlasse(void)
    : m_IchWillEineKonstruktorVariable.Klasse(3) // hier ist immer error C2059: Syntaxfehler : '.'
    {
    
    }
    ////////////////////////////////////////////////////////////\\///////////////////////////////////////////////////////////////
    

    Und ohne sagt er logischerweise:

    error C2512: Kein geeigneter Standardkonstruktor verfügbar



  • Hallo,

    mach mal statt dem '.' ein '::'

    mfg
    v R



  • Hey virtuell Realisticer,
    danke für die schnelle Antwort
    Aber leider geht auch auch nicht. Nun sagt er:

    error C2653: 'm_IchWillEineKonstruktorVariable' : Keine Klasse oder Namespace

    Er hat ja auch recht, es handelt sich um ein Struct. Aber was nun?



  • m_IchWill.. ist keine Klasse sondern eine Instanz. Drum kannst auch kein :: verwenden...

    class CTestKlasse 
    { 
     CTestKlasse(void); 
    
     //Probiers mal so:
     struct
     { 
       CMeineKlasse Klasse; 
     }m_IchWillEineKonstruktorVariable; 
    }
    
    class CTestKlasse 
    { 
     CTestKlasse(void); 
    
     //***oder so:
     CMeineKlasse m_Instanz; 
    }
    


  • ausserdem fehlen da Semikolons hinter den Klassendeklarationen.



  • @CPPhacker

    Ich kann ja auch nur an eine Instanz eine Variable an den Konstruktor übergeben.
    Wenn ich das so mache wie Dein Erstes Beispiel sagt er:

    error C2639: Vom Compiler angelegter Destruktor ist für die unbenannte Klasse erforderlich

    Zweites Beispiel ist klar. Aber ich brauche ein Struct. Bei mir kommt da ja noch mehr rein als nur eine Klasse 😉

    @DrGreenthumb
    Hab ich im post vergessen - sorry 😃



  • Xtreaft schrieb:

    Zweites Beispiel ist klar. Aber ich brauche ein Struct. Bei mir kommt da ja noch mehr rein als nur eine Klasse 😉

    Dann braucht dieses struct auch einen Konstruktor, der die Argumente "weiterleitet". "Um die Ecke" konstruieren kann man in C++ nicht.



  • Wie sieht die Syntax für ein Struct mit Konstruktor aus? Kann mir einer ein kleines Beispiel geben?



  • Struct ist in C++ eigentlich wie class zu behandeln

    struct test
    {
    CMeineKlasse m_MeineKlasse;
    
    test(int i):m_MeineKlasse(i)
    {
    }
    };
    


  • oder vollständig

    class CMeineKlasse
    {
    private:
    	int m_Int;
    public:
    	CMeineKlasse(int i):m_Int(i)
    	{
    	}
    };
    class CFoo
    {
    	struct test
    	{
    		CMeineKlasse m_MeineKlasse;
    
    		test(int i):m_MeineKlasse(i)
    		{
    		}
    	};
    public:
    	test m_test;
    	CFoo(int i):m_test(i)
    	{
    
    	}
    };
    

Anmelden zum Antworten