Inicjalizacja static const array

0

Witam,
mam problem z zainicjalizowaniem tablicy (za dużo C# i jak trzeba wrócić do C++ zaczynają się problemy ;-) )
Fragmenty mojego kodu:

class Display {

public:
        static const GLsizei VertexCount;
        static const GLsizeiptr PositionSize;
        static const glm::vec3 PositionData[VertexCount]; 

        (...)
};

    const GLsizei Display::VertexCount = 36;

    const GLsizeiptr Display::PositionSize = VertexCount * sizeof(glm::vec3);

    const glm::vec3 Display::PositionData[VertexCount] =
        {
            glm::vec3(0.0f,0.0f,0.0f),
            glm::vec3(0.0f,1.0f,0.0f),
            glm::vec3(1.0f,1.0f,0.0f),
            (...)
        };

Linia

static const glm::vec3 PositionData[VertexCount]; 

powoduje błąd IntelliSense: expression must have a constant value
Dlaczego? Przecież inicjalizuję rozmiar od stałego, statycznego VertexCount.

0

Wartość musi być znana już w miejscu deklaracji tablicy, musisz to 36 przenieść do definicji VertexCount w pliku nagłówkowym.

0

Tak jak przedmówca podpowiedział:

class Display {

public:
                static const GLsizei VertexCount = 36;
                static const glm::vec3 PositionData[VertexCount]; 
                static const GLsizeiptr PositionSize = VertexCount * sizeof(glm::vec3);
                 (...)
};
         const glm::vec3 Display::PositionData[VertexCount] = ...

lub tak

class Display {
 public:
                static const GLsizei VertexCount;
                static const GLsizeiptr PositionSize;
                static const glm::vec3 PositionData[]; 
                 (...)
};
        const GLsizei Display::VertexCount = 36;
        const glm::vec3 Display::PositionData[VertexCount] = ...
        const GLsizeiptr Display::PositionSize = VertexCount * sizeof(glm::vec3);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0