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