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/
Related videos on Youtube
Author by
vard
Updated on October 10, 2022Comments
-
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 over 11 yearsThere is an answer for C++11 in that question.
-
Angew is no longer proud of SO over 11 years@vard It's the answer by Flexo.
-
-
vard over 11 yearsUnfortunately my compiler doesn't allow this. He said that there is multiple array declaration.
-
Stals over 11 years@vard 'const int GameInstance::gameRulesTable[2][2] = {{1,2},{3,4}};' - this should be in a .cpp file.