Membervariable nur durch Defaultkonstruktor initialisierbar?



  • Hallo,

    ich habe folgendes Problem:

    Ich habe zwei Klassen Test1 und Test2. Klasse Test1 hat einen default-Konstruktor und einen Konstruktor, der ein Argument int nimmt.

    class Test1
    {
    private:
    	int t;
    
    public:
    	Test1();
    	Test1(int);
    	virtual ~Test1();
    
    Test1::Test1()
    {
    }
    
    Test1::Test1(int t_)
    {
    	t = t_;
    }
    
    Test1::~Test1()
    {
    }
    
    };
    

    Nun will ich in Klasse Test2 eine private Membervariable vom Typ Test1 haben, wobei t gleich mit einem Wert initialisiert werden soll.
    Folgender Code funktioniert aber nicht:

    class Test2
    {
    private:
    	Test1 teee(23);
    	Test1 taaa; //<--Das funktioniert natürlich
    public:
    	Test2();
    	virtual ~Test2();
    };
    

    Ich erhalte folgenden Compilerfehler:

    error: expected identifier before numeric constant
    error: expected ',' or '...' before numeric constant
    

    Hintergrund ist folgender:
    Ich habe eine Klasse Hashtable, deren Konstruktor zwei Argument für die Größe der Hashtable nimmt. In einer anderen Klasse hätte ich nun gern eine private Instanz der Klasse Hashtable, die gleich mit der richtigen Größe initialisiert werden soll. Das bekomme ich aber auf dem oben genannten Weg nicht hin.



  • //Musst du im Konstruktor initialisieren
    
    class Test2
    {
        Test1 teee;
    };
    
    Test2::Test2() : teee(23)
    {
    }
    


  • Super, hat bestens geklappt.
    Vielen Dank für die schnelle Hilfe!


Anmelden zum Antworten