I'm getting the following compile error...
error C2536: 'Player::Player::indices' : cannot specify explicit initializer for arrays 
why is this?
header
class Player
{
public:
    Player();
    ~Player();
    float x;
    float y;
    float z;
    float velocity;
    const unsigned short indices[ 6 ];
    const VertexPositionColor vertices[];
};
cpp
Player::Player()
:
    indices
    { 
        3, 1, 0,
        4, 2, 1 
    },
    vertices{
        { 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 ) }
    }
{
}
EDIT TO SHOW MY ATTEMPT AT std::array
std::array<unsigned short, 6> indices;
std::array<VertexPositionColor, 4>  vertices;
can't get this to work either.
error C2661: 'std::array<unsigned short,6>::array' : no overloaded function takes 6 arguments
and if I do this in my construct like the other post says:
indices( { 
    3, 1, 0,
    4, 2, 1 
} ),
vertices ( {
    { 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 ) }
} )
it crashes the compiler...
EDIT:: Victory!
I put them in my cpp file babeh:
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 ) }
}
                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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With