Estoy empezando a aprender C++ y Qt, pero a veces el código más simple que pego de un libro produce errores.¿Cómo acceder a los miembros estáticos de una clase?
Estoy usando g++4.4.2
en Ubuntu 10.04 con QtCreator IDE. ¿Hay alguna diferencia entre la sintaxis del compilador g ++ y otros compiladores? Por ejemplo, cuando intento acceder a miembros estáticos, algo siempre sale mal.
#include <iostream>
using namespace std;
class A
{
public:
static int x;
static int getX() {return x;}
};
int main()
{
int A::x = 100; // error: invalid use of qualified-name 'A::x'
cout<<A::getX(); // error: : undefined reference to 'A::x'
return 0;
}
creo que es exactamente el mismo que declaró here y here (¿no?). Entonces, ¿qué pasa con el código anterior?
No es ésta una declaración: static int getX() {return x;}? –
En ese contexto, declara y define getX() al mismo tiempo. Sin {return x;} sería solo una declaración. La definición es "el bit que lo hace funcionar", que es una implementación o algún almacenamiento real. – Flexo