Einfache Frage zu statischen Variablen/Methoden



  • Ich habe etwas in der Art:

    // Header
    class StatischTest
    {
    public:
      static bool doIt;
      static void yesWeCan();
    }
    
    bool StatischTest::doIt = true;
    
    // CPPclass StatischTest
    
    void StatischTest::yesWeCan()
    {
      print "NO WE CANT";
    }
    

    Ich erhalte undefined reference to StatischTest::doIt
    Warum ist das so, und vor allem: wie behebe ich es



  • sorry das wichtigste ist:

    in yesWeCan die Zeile:

    if(StatischTest::doIt)
    


  • Eigentlich hätte ich bei der Konstellation einen anderen Fehler erwartet - du hast die Definition des statischen Members im Header und damit das Risiko einer Mehrfach-Definition.



  • tz tz tz , das kommt davon wenn man MinimalBeispiele basteln will.

    Nochmal:

    //Header
    class Test
    {
    private:
    
    public:
        static Typ* variable;
        static bool isSetUp;
    
        static void init();
        static void release();
        static Typ* getVariable();
    };
    
    //CPPclass Test
    Typ* Test::variable = 0;
    bool Test::isSetUp = false;
    
    void Test::init()
    {
        if (!Test::isSetUp)
        {
            Test::variable = new VonTypAbgeleitet();
            Test::isSetUp = true;
        }
    
    }
    
    void Test::release()
    {
        if (Test::isSetUp)
        {
            delete Test::variable ;
            Test::isSetUp = false;
        }
    }
    Typ* Test::getVariable()
    {
      if (Test::isSetUp)
            return Test::variable;
      return 0;
    }
    

    In etwa, ein paar Sachen passen immer noch nicht aber es kommt hin



  • Ich sehe hier auch nix was zu einer "undefined reference" führen würde.



  • In der Code-Datei sollte ein Include für den dazugehörigen Header stehen.


Anmelden zum Antworten