Variablen aus Header nicht im cpp-Datei ansprechbar
-
Hallo,
folgendermaßen stellt sich mein Problem dar:
In der Headerdatei habe ich dies zu stehen:
class MyClass : public CObject { ... private: CArray<CKeyout> m_KeysoutList; ... };Und in der cpp-Datei jenes:
#include "header.h" void MyClass::AddKeyout(CKeyout keyout) { m_KeysoutList.Add(keyout); }Wenn ich das Gerät kompiliere gibt es keine Fehler oder Warnungen. Beim Ausführen jedoch schmiert die Sache an dieser Stelle ab:
m_KeysoutList.Add(keyout);Dazu kommt folgende Fehlermeldung:
Eine Ausnahme (erste Chance) bei 0x0040c63c in Prog.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000003c. Unbehandelte Ausnahme bei 0x0040c63c in Prog.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000003cDer Debugger sagt, dass der Key i.O. ist, das CArray ist jedoch fehlerhaft. Sämtliche zu dem Objekt gehörenden Variablen sind ohne Wert. Statt dessen steht dort das:
CXX0030: Fehler: Ausdruck kann nicht ausgewertet werdenDieses Problem besteht nicht, wenn ich in der Methode AddKeyout ein lokales CArray erstelle, etwa in dieser Art:
void MyClass::AddKeyout(CKeyout keyout) { CArray<CKeyout> KeysoutList; KeysoutList.Add(keyout); }Das ist jedoch nicht sinnvoll. Der Array-Typ ist also bekannt. Mir scheint, dass das Ding nicht initialisiert wird. Einen Konstruktor konnte ich bislang auch nicht sinnvoll in der cpp-Datei unterbringen. So:
MyClass::MyClass(void):m_KeysoutList()machts keinen Unterschied und so gehts nicht:
MyClass::MyClass(void) { m_KeysoutList = new CArray<CKeyout>; }Das ganze in VS 2005. Vielen Dank für eure Ideen.
schlampf
-
Und wie rufst Du die Funktion AddKeyout auf?
Offensichtlich hast Du keine gültige Instanz von MyClass angelegt und versucht eien NULL Zeigr zu verwenden.
-
Genauso war es, danke
