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