Arrays von Templates mit Parameterübergabe an den Konstruktor?



  • Hi

    Ich möchte von einer Template Klasse ein Array initialisieren. Das Problem ist das ich den Konstruktor der Template Klasse mit einem Parameter aufrufe.

    template <class D> class Test
    {
    public:
    Test(int iParam);
    ...
    };
    

    An anderer Stelle will ich nun wie gesagt ein Array von der TemplateKlasse generieren mit Parameterübergabe. Für einen Parameter 3 und Arraygrösse von 5 schreibe ich bisher:

    Test <double> g_M(3)[ 5 ];
    

    Die Fehlermeldung ist :
    error C2143: syntax error : missing ';' before '['

    Kann mir jemand weiterhelfen und den exakten Syntax nennen?
    Danke
    Stefan



  • das muss man in einer schleife machen.



  • Um ein Array zu erstellen brauchtst du immer einen Parameterlosen Konstruktor. Du könntest deinem Konstruktor einen default Parameter geben.

    template <class D> class Test
    {
    public:
    Test(int iParam = 3);
    ...
    };
    


  • . schrieb:

    das muss man in einer schleife machen.

    Dann muss man es aber als Feld von Zeigern anlegen und den einzelnen Zeigern mit new ein neues Objekt zuweisen.

    Wenn du die Variablen aber nicht mit new anlegen willst kannst du auch den Parameter aus dem Konstruktor entfernen und eine ini methode schreiben in der du den Parameter übergibst und machst was du auch immer damit machen willst und rufst die ini methode in einer Schleife auf.

    Gruß Mirauder Mo



  • Oder man gibt einen 2. Templateprameter dazu,
    über den man dann die Klasse intialisiert im Standardkonstruktor.

    Devil



  • Hallo,
    verwende statt des Arrays ein std::vector und schwupps hat sich dein Problem erledigt.
    Alternativ:

    Test <double> g_M[ 5 ] = {Test<double>(3), Test<double>(3), Test<double>(3),
                              Test<double>(3), Test<double>(3)};
    


  • Wo ist denn in deinem Beispiel was von std::vector zu sehen??



  • ???? schrieb:

    Wo ist denn in deinem Beispiel was von std::vector zu sehen??

    Kennst du die Bedeutung des Wortes "Alternativ"?

    Ich poste natürlich gerne auch noch ein Beispiel für die Verwendung von std::vector:

    int main()
    {
        std::vector<Test<int> > v(5, Test<int>(3));
    }
    

Anmelden zum Antworten