Nie powiodło się połączenie dwóch plików po usunięciu słowa kluczowego "statyczne", więc jest w porządku. Testowane za pomocą g ++. Sprawdź przy pomocy pliku readelf, czy element statyczny wydaje się wyeksportowany jako globalny symbol obiektu ... Myślę, że powinien to być lokalny obiekt ...?wiele definicji dla statycznego członka?
static1.cpp
class StaticClass
{
public:
void setMemberA(int m) { a = m; }
int getMemberA() const { return a; }
private:
static int a;
};
int StaticClass::a = 0;
void first()
{
StaticClass statc1;
static1.setMemberA(2);
}
static2.cpp
class StaticClass
{
public:
void setMemberA(int m) { a = m; }
int getMemberA() const { return a; }
private:
static int a;
};
int StaticClass::a = 0;
void second()
{
StaticClass statc1;
static1.setMemberA(2);
}
z informacją o błędzie:
/tmp/ccIdHsDm.o:(.bss+0x0): stwardnienie definicja `StaticClass :: a”
@Ropez: działa dobrze. Dzięki :) –
Czuję się źle ze względu na stan rzeczy, ponieważ odpowiedź ropez "wydaje się, że dała ci rozwiązanie, którego szukałeś. nie krępuj się przesuwać znacznik wyboru do swojej :) :) +1 dla niego. –
@Litb, obaj macie rację :) Wyjaśniłeś więcej. –