Error al vincular los siguientes dos archivos, cuando elimino la palabra clave "estática", está bien. Probado con g ++. Verifique con readelf para el archivo de objeto, el miembro estático parece que se exporta como un símbolo de objeto global ... Creo que debería ser un objeto local ...?definición múltiple para miembro estático?
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);
}
Con información de error:
/tmp/ccIdHsDm.o:(.bss+0x0): múltiple definición de `StaticClass :: a '
@Ropez: funciona bien. Gracias :) –
Me siento mal con el estado de las cosas, ya que la respuesta de Ropez parece haberle dado la solución que estaba buscando. siéntase libre de mover la marca de verificación a su :) :) +1 para él, de todos modos. –
@Litb, ambos tienen razón :) explicaron más. –