我正在尝试编写一个设置嵌套结构的程序,然后初始化该结构的数组。它给了我一些奇怪的错误。以下是所有相关代码:
//Structure called Stats for storing initial character stats
struct Stats{
string name;
int level;
int HP;
int STR;
int CON;
int DEX;
int INT;
int WIS;
int CHA;};
//Structure called Growth for storing character growth per level.
struct Growth{
int HPperlvl;
int STRperlvl;
int CONperlvl;
int DEXperlvl;
int INTperlvl;
int WISperlvl;
int CHAperlvl;};
struct Holdstats{
Stats classstats;
Growth classgrowth;};
const int SIZE = 10;
Holdstats classlist[SIZE];
Holdstats charlist[SIZE];
//Define initial classes, to be stored in the Classes structure
classlist[0].classstats = {"Fighter", 1, 18, 10, 10, 10, 10, 10, 10};
classlist[0].classgrowth = {1,1,1,1,1,1,1};
classlist[1].classstats = {"Wizard", 1, 10, 10, 10, 10, 10, 10};
classlist[1].classgrowth = {1,1,1,1,1,1,1}
我的编译器认为当我输入“classlist [0] .classstats”时,我正在尝试初始化一个大小为0的数组。我读这个的方式我试图访问classlist数组的第一个元素。这写得不错吗?
如果有人能给我一个这样一个数组看起来像什么的简短例子,那就太好了。从那里我想把它写成一个载体
答案 0 :(得分:2)
您没有展示所有类型的内容,但您应该能够采用这种基本方法。
Holdstats classlist[SIZE] = {
{ {"Fighter", 1, 18, 10, 10, 10, 10, 10, 10}, {1,1,1,1,1,1,1} },
{ {"Wizard", 1, 10, 10, 10, 10, 10, 10}, {1,1,1,1,1,1,1} },
}
答案 1 :(得分:0)
您的结构Holdstats
包含另外两种类型为classstats
和classgrowth
的结构。请记住这些是结构,而不是数组,所以我不能完全确定为什么你这样分配它们:
classlist[0].classstats = {"Fighter", 1, 18, 10, 10, 10, 10, 10, 10};
我猜你想填写holdstats结构本身里面的stats结构,这将在下面完成:
classlist[0].classstats.health = 15; //guessing you have a member named health
//OR if you create a constructor for you classstats with the proper copy constructor
classlist[0].classstats = classstats("Fighter", 1, 18, 10, 10, 10, 10, 10, 10);
//OR if you have an assign function
classlist[0].classstats.assign("Fighter", 1, 18, 10, 10, 10, 10, 10, 10);