const array class member initialization

12,706

Solution 1

Make it static?

class GameInstance{
    enum Signs{
        NUM_SIGNS = 3};
    static const int gameRulesTable[2][2];
public:
    explicit GameInstance(){};
};

...in your cpp file you would add:
const int GameInstance::gameRulesTable[2][2] = {{1,2},{3,4}};

Solution 2

In C++11, you could initialize const array member in an initialization list

class Widget {
public:
  Widget(): data {1, 2, 3, 4, 5} {}
private:
  const int data[5];
};

or

class Widget {
    public:
      Widget(): data ({1, 2, 3, 4, 5}) {}
    private:
      const int data[5];
    };

useful link: http://www.informit.com/articles/article.aspx?p=1852519

http://allanmcrae.com/2012/06/c11-part-5-initialization/

Share:
12,706

Related videos on Youtube

vard
Author by

vard

Updated on October 10, 2022

Comments

  • vard
    vard over 1 year

    How to init constant integer array class member? I think that in same case classic array isn't best choice, what should I use instead of it?

    class GameInstance{
        enum Signs{
            NUM_SIGNS = 3;
        };
        const int gameRulesTable[NUM_SIGNS][NUM_SIGNS]; //  how to init it?
    public:
        explicit GameInstance():gameRulesTable(){};
    };
    
    • Joseph Mansfield
      Joseph Mansfield over 11 years
      There is an answer for C++11 in that question.
    • Angew is no longer proud of SO
      Angew is no longer proud of SO over 11 years
      @vard It's the answer by Flexo.
  • vard
    vard over 11 years
    Unfortunately my compiler doesn't allow this. He said that there is multiple array declaration.
  • Stals
    Stals over 11 years
    @vard 'const int GameInstance::gameRulesTable[2][2] = {{1,2},{3,4}};' - this should be in a .cpp file.