undefined reference Problem



  • Hallo,

    wenn ich folgenden Code (den vollständigen) kompiliere

    class feld {
    ...

    static constexpr std::array<int, farbe::Nb> RankMask = { {0, 0xF} };
    ....
    feld();

    //---------------------------------------------------
    public:
    ...
    static int pawn_rank(const int feld, const int farbe) {
    return rank(feld) ^ RankMask[farbe];
    };
    ...
    };

    erhalte ich die Fehlermeldung: undefined reference to `feld::RankMask'

    Scheinbar vermisst er eine Definition der Variablen RankMask, aber weshalb ?
    und wie und wo kann ich sie einfügen. Vielen Dank !

    Gruß


  • Mod

    hgr52 schrieb:

    Scheinbar vermisst er eine Definition der Variablen RankMask, aber weshalb ?

    Weil keine da ist 🙂 . Du hast RankMask nur deklariert.

    und wie und wo kann ich sie einfügen.

    In einer Quellcodedatei (kein Header):

    constexpr std::array<int, farbe::Nb> feld::RankMask;
    

    P.S.: Falls du dich wunderst, ob das was mit constexpr, array, in-class initializern oder sonstigem aus C++11 zu tun hat: Hat es nicht. Das ist ganz normal bei statischen Membern und war schon immer so.



  • Problem gelöst, Danke 🙂

    Mit Deinem Hinweis auf c++11 hast Du auch ins Schwarze getoffen. Hatte da wohl etwas nicht verstanden und die Definitionen aus der.cpp entfernt.
    Nochmals Danke

    Gruß


Anmelden zum Antworten