I\'m getting the following compile error...
error C2536: \'Player::Player::indices\' : cannot specify explicit initializer for arrays
why
As everyone else was saying, set the properties of my class to static const and then define them in the cpp file for the class:
header file:
class Player
{
public:
Player();
~Player();
float x;
float y;
float z;
float velocity;
static const unsigned short indices[ 6 ];
static const VertexPositionColor vertices[ 4 ];
};
cpp:
const unsigned short Player::indices[ 6 ] = {
3, 1, 0,
4, 2, 1
};
const VertexPositionColor Player::vertices[ 4 ] = {
{ XMFLOAT3( -0.5f, -0.5f, -0.5f ), XMFLOAT3( 0.0f, 0.0f, 0.0f ) },
{ XMFLOAT3( -0.5f, 0.5f, -0.5f ), XMFLOAT3( 0.0f, 0.0f, 1.0f ) },
{ XMFLOAT3( 0.5f, -0.5f, -0.5f ), XMFLOAT3( 0.0f, 1.0f, 0.0f ) },
{ XMFLOAT3( 0.5f, 0.5f, -0.5f ), XMFLOAT3( 0.0f, 1.0f, 1.0f ) }
}
The size of the array needs to be defined in the class definition. C++ doesn't support variable sized arrays, at least, not yet:
class Player
{
public:
// ...
const unsigned short indices[ 6 ];
const VertexPositionColor vertices[4];
};
Assuming a suitable definition of VertexPositionColor
this should be OK (it compiles with gcc and clang using -std=c++11
).