2012-12-10 80 views
2

我想写一个程序来设置一个嵌套结构,然后初始化该结构的数组。这给我一些奇怪的错误。这里的所有相关代码:如何初始化一个嵌套结构数组

//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} 

我的编译器认为,当我键入“班级列表[0] .classstats”我试图初始化大小为0的数组我看这个问题的方法,我想访问类列表数组的第一个元素。这写的是否正确?

如果有人能给我一个这样一个数组的样子的简短例子,那将是很棒的。从那里我想写它作为一个载体

+0

甚至没有读过这个问题,但是你需要在结构声明之后有一个分号。 – gsingh2011

+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} }, 
} 
+0

谢谢!我不知道你可以这样做。这解决了我的问题,但我仍然对我为什么首先得到错误感兴趣。 –

+0

@DustinBurns:我甚至没有看到您发布错误的位置。 –

0

您的结构Holdstats拥有classstatsclassgrowth类型的两个其他结构。请记住这些结构,不是数组,所以我不会完全知道为什么你给它们像这样:

classlist[0].classstats = {"Fighter", 1, 18, 10, 10, 10, 10, 10, 10}; 

我猜你要填写统计结构内holdstats结构本身,这将在下面进行:

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); 
+0

它仍然像我输入classlist [0] .classstats时那样操作,我尝试初始化一个大小为0的数组而不是访问数组的第一个元素。任何想法如何解决这个问题?非常感谢,但我想我得到为什么我必须这样做 –

+0

告诉我们你的其他结构,错误可能在于这些 –