Wenn ich eine Klasse mit privaten statischen Mitgliedern in einem Namespace:Definieren ein statische Klasse Element innerhalb eines anderen Namespace
namespace A {
class T {
public:
//functions
private:
static bool a;
static unsigned int b;
Und ich tue Unit-Tests dieser Klasse in einer anderen Datei wie:
namespace {
bool A::T::a = false;
unsigned int A::T::b = 1;
/* tests declaring an instance of A...*/
ich erhalte den Fehler von Clang:
error: cannot define or redeclare 'a' here because namespace '' does not enclose namespace 'T'
error: cannot define or redeclare 'b' here because namespace '' does not enclose namespace 'T'
Ich habe andere Antworten auf statische private Mitglieder und die Notwendigkeit, sie zu erklären, wo die Deklaration der Klasse ist, was ich glaube, dass ich hier mache, aber der Fehler immer noch entgeht mir.
'Namespace {' ist anonym. Definition, wie die Deklaration in 'Namespace A' vorgeschlagen wurde, kann dort nicht durchgeführt werden, Punkt. –