cannot specify explicit initializer for arrays

前端 未结 2 855
误落风尘
误落风尘 2020-12-11 03:49

I\'m getting the following compile error...

error C2536: \'Player::Player::indices\' : cannot specify explicit initializer for arrays 

why

相关标签:
2条回答
  • 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 ) }
    }
    
    0 讨论(0)
  • 2020-12-11 04:37

    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).

    0 讨论(0)
提交回复
热议问题