Pure Verzweiflung seit 3 Stunden bei Statischer Variabel



  • Guten Tag an Alle.
    Ich bin neu in diesem Forum, doch arbeite schon bisschen längers mit C++.
    Doch nun scheitere ich seit Stunden an einer Fehlermeldung und weiss nicht mehr weiter, durchforschte sogar extra nochmal ein Tutorial (http://www.cprogramming.com/tutorial/statickeyword.html) doch brachte auch nichts.
    Folgender Code:

    class TaskBar
    {
    public:
    	static Task* curAct;
    	static void Activate(Task *t)
    	{
    		TaskBar::curAct=t;
    	}
    ...
    

    erscheint folgende Fehlermeldung:

    F:\DOKUME1\kog\LOKALE1\Temp/ccQceqE3.o:main.cpp:(.text+0x15dc): undefined reference to TaskBar::curAct' F:\\DOKUME~1\\kog\\LOKALE~1\\Temp/ccQceqE3.o:main.cpp:(.text$_ZN7TaskBar8ActivateEP4Task[TaskBar::Activate(Task*)]+0x7): undefined reference toTaskBar::curAct'
    collect2: ld returned 1 exit status

    Ich habe schon versucht TaskBar:: wegzunehmen, oder aus der Main die curAct Variabel vorzudefinieren. Alles gescheitert, dann noch ein static int test; ausprobiert, genaue der gleiche Fehler.
    die Klasse dient nur als verschönerung, damit alles Compakt in einer Klasse ist.

    Ich hoffe Ihr habt mir einen Rat.
    Einen schönen abend.



  • Ja, dir fehlt noch die Definition, sagt ja auch die Fehlermeldung.

    class TaskBar
    {
    public:
        static Task* curAct;  // Das ist nur eine Deklaration! Definition fehlt.
        static void Activate(Task *t)
        {
            TaskBar::curAct=t;
        }
    

    Da fehlt noch sowas:

    Task* TaskBar::curAct; // Defintion (ohne static!)
    


  • Ach du scheisse!
    Ich habe schonmal versucht am ende der Datei Task* TaskBar::curAct=NULL;
    Kamen auch wieder fehlermeldungen weil man nicht einfach so Definieren kann und in der main Funktion klappte es auch nicht mit =NULL...
    aber einfach Task* TaskBar::curAct; hatte ich nie probiert..

    Ich bin dir wirklich dankbar ... Mein kollege hatte schon recht, hier wird einem geholfen 😃


Anmelden zum Antworten