globale Private Variable in einer Klasse deklarieren?



  • Hallo zusammen,

    ich hab eine Klasse CTOUCHBAR in der Touchbar.h geschrieben (siehe Code).

    class CTOUCHBAR
    {
    // Memberfunctions
    public:
    	CTOUCHBAR( );
    	~CTOUCHBAR( );
    
    	char CheckTouch(POINT p);
    	void DrawTouchbar(bool mehrfachAnwahl);
    
    private:
    
    	BYTE TouchbarValue;
    	bool flagMehrfachAnwahl; //Speicher für die Darstellung des Touchbars
    	char CalculateAbsolutValue(POINT p);
    	char CalculateInkrementValue(POINT p);
    
    };
    

    Der Variable "flagMehrfachAnwahl" möchte ich in der Funktion "void DrawTouchbar(bool mehrfachAnwahl)" den Wert mehrfachAnwahl zuweisen (siehe Code Touchbar.c):

    void CTOUCHBAR::DrawTouchbar(bool mehrfachAnwahl)
    {
    	flagMehrfachAnwahl=mehrfachAnwahl; 
    }
    

    Beim Compilieren kommt die Meldung:
    error C2065: 'flagMehrfachAnwahl' : undeclared identifier

    Wo muss ich die Variable noch deklarieren so das diese Private und Global in der Klasse verfügbar ist?

    Gruß
    spacehelix



  • Hallo,

    also der Code, wie du ihn gepostet hast ist korrekt. Der Zugriff auf die Member Variable stimmt.
    Ich denke hier ist der Hund wo anders begraben.

    Ich kann mir nicht vorstellen, dass das der einzige Fehler ist den der Compiler liefert.

    Es kann mehrere Gruende geben, dass dein Code nicht funktioniert:
    z.B.
    - Hast du im Implementationfile vllt vergessen den Header zu inkludieren???
    - Falls du den VC++ Compiler verwendest (C2065 deutet mal daraufhin): hast du die Compiler option /Za eingeschalten? Da du ein C file hast, wuerde der Compiler in diesem Fall den Code als ANSI C interpretieren und in ANSI C gibt es keine Klassen. Du solltest das File auf alle Faelle in Touchbar.cpp umbenennen.

    Aber wie gesagt, ich glaube nicht dass du nur die eine Fehlermeldung bekommst. Poste die anderen, dann kann ich dir weiterhelfen.

    Gruesse Georg.



  • Hallo Georg,

    ich hab da einen kleinen Fehler bei meiner Fehlerbeschreibung gemacht.
    Der Fehler Tritt nicht in der beschriebenen Funktion auf, dort wird die Variable erkannt.
    Der Fehler tritt in der Funktion "char CheckTouch(POINT p)" auf (siehe Code).

    Die Touchbar.c heisst Touchbar.cpp ebenfalls ein Fehler bei meiner Beschreibung (sorry).

    char CheckTouch(POINT p)
    {
    	//Überprüfen ob der Touch auf dem Touchbar stattgefunden hat
    	if ((p.x>=TOUCHBAR_LEFT) && (p.x<=TOUCHBAR_RIGHT) && 
    		(p.y>=TOUCHBAR_TOP) && (p.y<=TOUCHBAR_BOTTOM))
    	{
    		if (flagMehrfachAnwahl==false)
    			return CalculateAbsolutValue(p);
    		else
    			return CalculateInkrementValue(p);	 
    	}
    	return false;
    }
    

    Also wenn ich die if Abfrage kommentiere, wird das Projekt ohne Fehlermeldung kompiliert. Die Variable "flagMehrfachAnwahl" wird dann in der Funktion "DrawTouchbar(bool mehrfachAnwahl)" erkannt.

    Wenn ich den Kommentar rausnehme, kommt die beschriebene Fehlermeldung:
    error C2065: 'flagMehrfachAnwahl' : undeclared identifier.

    Hab ich in dieser Funktion einen Fehler?

    Gruß
    spacehelix



  • Diese Funktion ist nicht Member der Klasse CTOUCHBAR. Die Memberfunktion müsste CTOUCHBAR::CheckTouch heißen.



  • Danke für die Hilfe.

    Jetzt Funktioniert es.

    Gruß spacehelix


Anmelden zum Antworten