DLL und Objekte
-
Hallo,
ich hab ein "kleines" Problem mit meiner DLL:
Meine DLL enthält mehrere Klassen, von einer werden in einer *.cpp-Datei weitere Klassen abgeleitet und davon Objekte erstellt. Dachte ich zumindest, aber irgendwie klappt das nicht. Aufbau:
// MyDLL.h #include "classes.h" // .. // MyDLL.cpp // hier steht die dllmain() // classes.h class CMyClass { // .. }; // classes.cpp CMyClass::CMyClass() { //.. } // .. class CNewClass1 : public CMyClass { //.. }; //.. CNewClass1 newobj1(); // und dies wird nicht initialisiert... //..
... und ich weiß nicht, warum!? Kann mir jemand helfen?
Ich freue mich über jeden Hinweis,
thanx,
Shaggy
-
// und dies wird nicht initialisiert...
Kommt eine Fehlermeldung?
-
Nö,
schön wär's!
Zusätzliche Info:
CMyClass erzeugt eine verkettete Liste mit seinen Instanzen, implementierung:
class CMyClass { public: CMyClass(); virtual ~CMyClass(); public: static CMyClass* GetFirst() { return m_pFirst; }; // gibt leider NULL zurück inline CMyClass* GetPrev() const { return m_pPrev; }; inline CMyClass* GetNext() const { return m_pNext; }; protected: static CMyClass* m_pFirst; CMyClass* m_pPrev; CMyClass* m_pNext; }; CMyClass::m_pFirst = NULL; CMyClass::CMyClass() { m_pPrev = NULL; // hier komme ich niemals an m_pNext = m_pFirst; m_pFirst = this; } CMyClass::~CMyClass() { if(m_pFirst == this) m_pFirst = m_pNext; if(m_pPrev != NULL) m_pPrev->m_pNext = m_pNext; if(m_pNext != NULL) m_pNext->m_pPrev = m_pPrev; } class CNewClass1 : public CMyClass { public: CNewClass1(); virtual ~CNewClass1(); }; CNewClass1 newobj1();
Egal, wohin ich die Definition von CNewClass1 und CNewClass1 newobj1(); lege, auch wenn ich das in die *.cpp lege wo die dllmain liegt, newobj1 wird nie initialisiert!
Shaggy
-
Schreib mal
CNewClass1 newobj1;
Ansonsten könnte es als Funktionsdeklaration interpretiert werden der CNewClass1 zurückgibt.
CNewClass1 newobj1(void); // Schaut nu aus wie ne Funktion ?!
[ Dieser Beitrag wurde am 24.03.2003 um 11:52 Uhr von Knuddlbaer editiert. ]
-
Danke schön, jetzt klappt's! So'n Scheiß! Dass man auch immer auf solche kleinen Fehler reinfällt.
Wie gut, dass ich mir ein Makro für 50 Klassen gemacht habe, so musste ich nur eine Änderung machen...Jetzt muss ich nur noch herausfinden, warum ein Damage after block ... auftaucht und das ist meine DLL (fast) fertig.
Shaggy