我有一个数组作为类的成员。在一个子类中,我想用不同的大小重新定义数组。我想这样做是因为我预计会创建许多子类,每个子类只有它需要的数组大小,仅此而已。
class Foo
{
Foo() {ivar = 1};
int thisArray[2];
int ivar;
}
class Bar : public Foo
{
Bar() {ivar = 3};
int thisArray[4];
}
int main()
{
Foo myFoo;
Bar myBar;
Foo fooCollection[] = {myFoo,myBar};
cout << "myFoo array size = " << sizeof(myFoo.thisArray)/sizeof(int) << endl;
cout << "myBar array size = " << sizeof(myBar.thisArray)/sizeof(int) << endl;
for (int n=0;n<2;n++)
{
cout << "fooCollection[" << n << "] array size = ";
cout << sizeof(fooCollection[n].thisArray)/sizeof(int) << endl;
}
for (int n=0;n<2;n++)
{
cout << "fooCollection[" << n << "] ivar = ";
cout << fooCollection[n].ivar << endl;
}
}
我的结果是:
myFoo array size = 2
myBar array size = 4
fooCollection[0] array size = 2
fooCollection[1] array size = 2
fooCollection[0] ivar = 1
fooCollection[1] ivar = 3
我明白了,因为我将数组对象声明为 class 的对象Foo
,所以myBar
在该范围内引用的引用myBar
将好像它是 aFoo
并因此解释thisArray
为等于 2 的大小。我也理解为什么ivar
会这样。
有没有办法影响类thisArray
内的大小,Bar
以便可以在对象数组中识别其“正确”大小Foo
?我会使用矢量,但它们在 arduino 平台上并不友好。我也可以简单地在 Foo 类中创建大小为 100 的数组,但我试图注意内存分配。