有点晕啊,问个简单的关于对象数组嵌套的问题
class A
{
private:
int v;
public:
A(){v=0;}
~A(){}
void SetV(int tmp)
{
v=tmp;
}
int GetV(){return v;}
};
class B
{
private:
A ba[3];
public:
B(){}
~B(){}
A GetA(int i){return ba[i];}
};
class C
{
private:
B cb[5];
public:
C(){}
~C(){}
void SetAData()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<3;j++)
{
cb[i].GetA(j).SetV((i+1)*(j+1));
printf(" %d ",cb[i].GetA(j).GetV());
}
printf("\n");
}
}
};
int main()
{
C c;
c.SetAData();
getchar();
}
输出结果居然全是0,也就是说setV函数压根没起作用,
一直以为系统创建C类对象时会自动为cb对象数组分配地址空间(5个B对象),创建cb时又会自动为ba分配空间(3个A对象),也就是c对象中的15个A应该在地址是独立的啊,真晕,求解,大家帮我清醒清醒啊
[解决办法]
把
- C/C++ code
A GetA(int i){return ba[i];}