GOOGLE ADS

viernes, 29 de abril de 2022

¿Cómo acceder a miembros estáticos de una clase?

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.2Ubuntu 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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...