statische membervariablenklasse initalisieren
-
Hallo,
ich hab eine Klasse bei der jedes Objekt die gleichen RegEx-objekte verwendet muss. Also dachte ich mir, ich erklär diese Elemente statisch damit sie nur einmal erzeugt werden müssen.(spart Speicher)
Aber meine Initilasierung funktioniert irgentwie nicht richtig. Er will das nicht annehmen. in der header-datei:
private:
static const QRegExp unfold("\r\n(?=\s)");
bekomm ich folgenden Fehler:
1>d:\class1.h(19) : error C2059: syntax error : 'string'
ich hab mir gedacht, wenn ich das so statisch mache, dann kann ich von jedem objekt aus mit class::unfold das regex abrufen und benutzen. Es aber durch const nicht verändern.
-
Sorry, ich kann aus deinem Text nur wenig entziffern. Statische Member allgemein werden so initialisiert:
//Code.hpp class Foo { static int Bar; static const int Baz; }; //Code.cpp int Foo::Bar = 123; const int Foo::Baz = 123;
-
QRegEx ist ein klasse und das zeug in den klammern sind die variablen für den konstruktor
-
Dann mach es wie ich es in meinem Beispiel mache...
-
das funktioniert aber bei mir nicht. wo sollen denn die klammern für den konstruktor hin? der schreibt immer syntax error
-
class Foo { static const Bar; }; Foo::Bar = Bar(1, 2);
-
//Code.hpp class EineKlasse { EineKlasse(int Data); }; class Foo { static const EineKlasse Bar; }; //Code.cpp EineKlasse::EineKlasse(int Data) { } const EineKlasse Foo::Bar = EineKlasse(123);War das so schwierig?
-
gehört das const mit zu der initialisierung? auch ausserhalb der klasse?
-
ach ok ich hatte das const außerhalb nicht.
Innerhalb kann man das gar nicht machen.