Problem mit private Memberfunktionen ==> "Error: Expression cannot be evaluated", HELP!
-
Prototyp der Klasse:
class CSystem { private: // ***** System borders ***** float m_LeftBorder; float m_TopBorder; float m_RightBorder; float m_BottomBorder; // ***** Step range ***** float m_HorzStepRange; float m_VertStepRange; // ***** Gartering & Axis ***** void DrawGartering( HDC hDC, const RECT &descRect ); void DrawXYAxis( HDC hDC, const RECT &descRect ); public: CSystem( ); ~CSystem( ); void SetSystemBorders( float LeftBorder, float TopBorder, float RightBorder, float BottomBorder ); void DrawCoordinateSystem( HWND hWnd, HDC hDC ); };Definitionen der Funktionen:
// ***** Draw x/y gartering ***** void CSystem::DrawGartering( HDC hDC, const RECT &descRect ) { // ***** Horz. gartering ***** for( float y = m_VertStepRange; y < descRect.bottom; y += m_VertStepRange ) { MoveToEx( hDC, descRect.left, y, 0 ); LineTo( hDC, descRect.right, y ); } // ***** Vert. gartering ***** for( float x = m_HorzStepRange; x < descRect.right; x += m_HorzStepRange ) { MoveToEx( hDC, x, descRect.top, 0 ); LineTo( hDC, x, descRect.bottom ); } } // ***** Draw x/y axis ***** void CSystem::DrawXYAxis( HDC hDC, const RECT &descRect ) { HPEN hPen = CreatePen( PS_SOLID, 2, RGB( 0, 0, 0 ) ); HGDIOBJ hOldPen = SelectObject( hDC, hPen ); // ***** x-axis ***** // ***** Proofe whether x-axis is visible ***** bool bXAxisShown = false; float xAxis = 0.0f; for( float x = m_BottomBorder; x < m_TopBorder; x += m_VertStepRange ) { // Hier kommt dann der Fehler xAxis += m_VertStepRange; if( (int)x == 0 ) { bXAxisShown = true; break; } } // ***** If x-axis is shown ***** if( bXAxisShown == true ) { MoveToEx( hDC, descRect.left, xAxis, 0 ); LineTo( hDC, descRect.right, xAxis ); } SelectObject( hDC, hOldPen ); DeleteObject( hPen ); }
-
Hmm, in Deinem Codeschnipsel kommt m_LeftBorder doch gar nicht vor?!

-
*seufz*
Was ist eigentlich so schwer an:
1. Relevantem Code
2. Exakte Fehlermeldung
3. Zeilenangaben
-
LordJaxom schrieb:
*seufz*
Was ist eigentlich so schwer an:
1. Relevantem Code
2. Exakte Fehlermeldung
3. Zeilenangaben
Die Punkte 1, 2 und 3.

-
1. Steht da
2. Error: Expression cannot be evaluated
3. Zeile 29Steht alles da
-
Tachyon schrieb:
Hmm, in Deinem Codeschnipsel kommt m_LeftBorder doch gar nicht vor?!

-
m_LeftBorder kommt in der Zeile aber gar nicht vor. Also entweder lautet die Fehlermeldung anders, die Stelle ist eine andere, oder der Compiler spinnt.
-
[...]die Membervariablen nicht lesen kann. Wieso kann er das in der einen private Funktion aber in der anderen dann nicht mehr?
@ "Hmm, in Deinem Codeschnipsel kommt m_LeftBorder doch gar nicht vor?!"
ich hab nur eine aufgelistet, weil ich eigentlich dachte das reicht, aber hier bitte:
- this 0x01b00017 {m_LeftBorder=??? m_TopBorder=??? m_RightBorder=??? ...} CSystem * const m_LeftBorder CXX0030: Error: expression cannot be evaluated m_TopBorder CXX0030: Error: expression cannot be evaluated m_RightBorder CXX0030: Error: expression cannot be evaluated m_BottomBorder CXX0030: Error: expression cannot be evaluated m_HorzStepRange CXX0030: Error: expression cannot be evaluated m_VertStepRange CXX0030: Error: expression cannot be evaluatedHilft euch das jetzt weiter?
Ich habe das Klassenobjekt also static pointer und initialisiere es in der WM_CREATE via' object = new KLASSE( ); kanns daran irgendwie liegen?
Gruß Tobi.
-
T0bi schrieb:
ich hab nur eine aufgelistet, weil ich eigentlich dachte das reicht
Hätte sie vielleicht, wenn sie im Zusammenhang zu dem von Dir gesagten gestanden hätte. Du kannst Dich aber nicht in der Fehlermeldung auf Äpfel beziehen und dann ein Beispiel mit Birnen posten, nur weil der Fehler dort zufällig auch auftritt (was Du nichtmal erwähnt hast).
Hilft euch das jetzt weiter?
Bist Du Dir sicher, dass der Compiler diese Meldung ausgibt? Die Meldung sieht eher nach dem Debugger vom Visual Studio aus. Und hier sieht es aus, als könnte der Debugger einige Variablen nicht auswerten. Das passiert zum Beispiel, wenn sie wegoptimiert wurden, oder schlicht zu dem Zeitpunkt nicht sichtbar sind.
-
Hm, heißt das dann wenn der Debuger die nicht auswerten kann, kann es im Programm selber auch nicht umgesetzt werden?
-
T0bi schrieb:
Hm, heißt das dann wenn der Debuger die nicht auswerten kann, kann es im Programm selber auch nicht umgesetzt werden?
Anders herum.
-
ok danke, ich denke ich habs gerade geregelt, in der for schleife haben die Proportionen nicht ganz gestimmt, der letzte Parameter der schleife war viel zu hoch.
Trotzdem danke.
Gruß Tobi.