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ß
-
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 DankeGruß