If I defined a class:
class Blah {};
How can I:
std::string const className = /* What do I need to do here? */;
assert( cla
Like this:
class Blah { static std::string const className() { return "Blah"; }};
std::string const name = Blah::className();
assert(name == "Blah");
Or this:
class Blah {};
template < typename T > struct name;
template < > struct name { static std::string value() { return "Blah"; }};
std::string const classname = name::value();
assert(classname == "Blah");
Fancier:
#define DECLARE_NAMED_CLASS( Name ) \
struct Name;\
template < > struct name { static std::string value() { return #Name; }};\
struct Name
DECLARE_NAMED_CLASS(Blah) {};
std::string const className = name::value();
...
Or this:
class Blah : QObject { Q_OBJECT };
Or this:... Or this: ...