Bezeichnung der Instanz einer Klasse ermitteln
-
Für eine Messwerterfassung habe ich mir eine Klasse geschrieben (abgeleitet von CObject), die die Messwerte in einem CArray hält und mir die statistischen Arbeiten (Mittelwert, Varianz, ...) abnimmt. Die funktioniert auch sehr gut. Zu Testzwecken hab ich eine Methode implementiert, die mir die einzelnen Messwerte in eine CSV-Datei schreibt. Nun möchte ich im Dateinamen den Namen der Instanz dieser Klasse verwenden, damit man dann später weiß, woher die Messwerte stammen. Bisher bastel ich mir den Namen aus dem Systemdatum und der Systemzeit zusammen, was ich aber noch wie beschrieben erweitern will. Wie komme ich zur Laufzeit an den Namen der Instanz?
-
Wenn die Klasse korrekt von CObject abgeleitet wurde und per DELCARE_DYNAMIC angelegt wurde kannst Du mit CObject::GetRuntimeClass()->m_pszClassName den Namen der Klasse ermittlen.
Du kannst Den Klassennamen auch aus dem define __FUNCTTION__ ermittlen!
-
Ich hab das zwar mit dem Assistenten von CObject abgeleitet, allerdings fehlten die entsprechenden Makros. Ich hab jetzt in die *.h
DECLARE_DYNAMIC(CMessdaten)und in die *.cpp
IMPLEMENT_DYNAMIC(CMessdaten, CObject)eingefügt, bekomme aber als CMessdaten::GetRuntimeClass()->m_lpszClassName CMessdaten zurück. Ich will ja aber nicht den Klassennamen (den kenn ich ja schon) sondern den Namen der Instanz dieser Klasse.
Bsp.:CMessdaten Sensor1;Hier soll dann Sensor1 zurückgeliefert werden.
-
Geht nicht.
Instanzen haben in C++ keinen Namen.Du könntest selbst einen "Namen" mitgeben und in der Instanz speichern. Einfach nen CString an den ctor übergeben und als Member in der Klasse ablegen oder sowas in der Art.
Dann musst du halt
CMessdaten Sensor1("Sensor1");schreiben.