Ungültige Initialisierung vom nicht eingebauten Typ



  • Hallo,

    ich habe eine abstrakte klasse von der 2 klassen erben.
    Ich bekomme folgenden compiler-error.

    ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen Mtx<MyStruct>*
    

    die problemklasse die erbt sieht so aus:

    //myFile.h
    
    struct MyStruct {
         int a;
         double b;
    };
    
    #include "MyFile.h"
    
    class MtxComp : public Mtx
    {
        public:
    
             // ein paar methoden
    
             //member
            Mtx<MyStruct>* mtx = NULL;
            //Mtx<double>* mtx = NULL;
    };
    

    seltsamerweise kann ich Mtx<double> benutzen als member aber Mtx<MyStruct> nicht. Warum und wie erreiche ich das?

    Danke



  • = NULL;
    da liegt der fehler...
    du kannst keinen nicht-statischen membern außerhalb von member-funktionen werte zuweisen...

    bb



  • In der Klassendeklaration kannst du keine (nicht eingebauten) Typen definieren. Nimm das "=NULL" weg und pack das in den Konstruktor von MtxComp.



  • Aha ....ok vielen dank. Ich versuche es zu begreifen ...dann ist wohl double ein eingebauter typ...



  • Edit: Richtig. int, char, bool, ... etc., gehören dazu. Das erkennt man z.B. auch daran, das sie (bei den Meisten) IDE's blau makiert werden. String würde z.B. auch nicht gehen.



  • das ist aber nicht sein einziger fehler... einmal nutzt er mtx als basisklasse (ohne template-argumente), dann ist es auf einmal nen klassentemplate und dann versucht er immernoch etwas NICHT-statisches statisch zu initialisieren...

    hat nicht nur was mit build ins zu tun...

    bb


Anmelden zum Antworten