es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Asignar constantes estáticas dentro y fuera de una clase, ¿por qué difiere?

Esto es tan extraño, estoy programando una biblioteca de manipulación de píxeles en C++. Por lo tanto, quiero tener una clase llena de preajustes de color. Color es una clase con una estructura que se ve así:

Color(int r, int g, int b, int a)

Y si lo declaro fuera de cualquier clase como:

static const Color COL_BLACK = Color(0, 0, 0, 255);

Eso no muestra ningún error en Visual Studio Code. Pero, cuando lo estructuro de esta manera:

class Colors {
public:
static const Color Black = Color(0, 0, 0, 255);
};

El signo igual tiene una línea ondulada roja debajo, pero cuando paso el mouse sobre él, no me dice qué está mal. ¿Qué está mal?

Tenga en cuenta que quiero que se llame así:

Color newCol = Colors::Black;

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando declarar una variable miembro estática Black de tipo Color dentro de la clase Colors.

    Para hacer esto, necesitas proporcionar un inicializador para la variable miembro estática. Puedes hacerlo añadiendo un inicializador después de la declaración de la variable miembro estática:

    class Colors {
    public:
      static const Color Black = Color(0, 0, 0, 255);
    };
    

    Una vez que hayas hecho esto, deberías ser capaz de usar la variable miembro estática Black como has mostrado en tu ejemplo:

    Color newCol = Colors::Black;
    

Comments are closed.