Estoy empezando a aprender C++ y Qt, pero a veces el código más simple que pego de un libro da como resultado errores.
Estoy usando g++4.4.2
Ubuntu 10.04 con QtCreator IDE. ¿Hay alguna diferencia entre la sintaxis del compilador g++ y otros compiladores? Por ejemplo, cuando trato de 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 lo mismo que se declara aquí y aquí (¿no es así?). Entonces, ¿qué tiene de malo el código anterior?
Solución del problema
Ha declarado que los miembros estáticos están bien, pero no los ha definido en ninguna parte.
Básicamente, lo que ha dicho "existe algún miembro estático", pero nunca reserve algo de memoria para ello, necesita:
int A::x = 100;
En algún lugar fuera de la clase y no dentro de main.
No hay comentarios:
Publicar un comentario