Stringkostante in Interface
-
Wie kann man eine Stringkostante in einer Interfaceklasse initialisieren?
class IFoo { public: static const std::string txt("abc"); //geht nicht virtual int bar() = 0; };
-
albertoerlber schrieb:
Interfaceklasse
Was ist eine Interfaceklasse?
Btw: Es geht, du verwendest nur eine alte Version von C++ (vor C++11).
-
-
class IFoo { public: static const std::string txt; virtual int bar() = 0; }; const std::string IFoo::txt("abc");
Vor C++11 mussten statische Member außerhalb der Klasse definiert werden.
-
mortified_penguin schrieb:
Vor C++11 mussten statische Member außerhalb der Klasse definiert werden.
Nathan schrieb:
-
Worauf willst du hinaus?
-
mortified_penguin schrieb:
Worauf willst du hinaus?
Laut ideone auch mit C++11.
-
Es war schon immer so, dass man statische Member in der Klasse nur deklariert.
Falls der std::string sowieso konstant bleibt, warum dann nicht einfach
static char constexpr txt[] = "abc";
?
So kann man das in der Klasse initialisieren.