Klassenname as Variable
-
Hey, ich habe vor einen Funktion den Klassenname per String zu übergeben. Diese soll dann anhand des String eine Variable deklarieren. Geht das?
z.B: szClassName = "CTestClass"
Jetzt soll eine Funktion eine Variable deklarieren:
void SetVariable(CString szClassName) { szClassName test; //sollte dann folgenden machen: CTestClass test; }Wie krieg ich das hin?
-
RTTI
-
Das musst du in den Projekteinstellungen aber auch aktivieren, sonst gibts an den Stellen nen Absturz.
-
Was heist den RTTI? Und wo muss ich das Aktivieren?
-
AnTri schrieb:
Was heist den RTTI? Und wo muss ich das Aktivieren?
MSDN.........
Run-Time-Type-Information....
/GR (Bestimmung des Objekttyps zur Laufzeit (RTTI) aktivieren)
Anfang | Übersicht | Vorgehensweise | Compiler OptionenDie Option Bestimmung des Objekttyps zur Laufzeit (RTTI) aktivieren (/GR) veranlaßt den Compiler, Code hinzuzufügen, der Objekttypen zur Laufzeit bestimmt. Wenn diese Option angegeben ist, definiert der Compiler das Präprozessor-Makro _CPPRTTI. Diese Option wird standardmäßig aufgehoben (/GR–).
Sie finden diese Option in der Entwicklungsumgebung, wenn Sie im Menü Projekt auf Einstellungen klicken. Klicken Sie dann auf die Registerkarte C/C++ und im Feld Kategorie auf Programmiersprache C++.
Weitere Informationen über die Typbestimmung zur Laufzeit finden Sie unterBestimmung des Objekttyps zur Laufzeit im C++-Sprachverzeichnis.
-
RTTI = RunTimeTypeInformation
Ist nen mechanismuss, der Dir zur laufzeit (bedingt) CompilerInfos (namen der Klassen) ausgeben kann.
Aber achtung.
RTTI solltest zur Serialisierung nicht verwenden. Es ist nicht standardisiert, was dir der compiler als Klassennamen ausgibt. Definiert ist nur, das fuer jede gleiche Klasse nen gleicher name und fuer jede ungleiche Klasse nen ungleicher name erzeugt werden soll.
Die Bezeichnug der Namen kann sich innerhalb der Versionen eines COmpilers aendern und erst recht bei unterschiedlichen kompilern. Ist also nicht wirklich "fest" !!! (macht sich dann doof, weil deine Save files an ne compilerversion gebunden sind).Um nur klassen auseinanderzuhalten ists ok ....
Bin mir nicht sicher, was die MFC und dieses IMPLEMENT_SERIAL hernimmt ....
Ciao ...