クラスのメンバーとして配列があります。サブクラスで、配列を別のサイズで再定義したいと思います。多くのサブクラスを作成し、それぞれに必要な配列サイズのみを追加し、それ以上は作成しないと予想しているため、これを実行したいと思います。
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
配列オブジェクトをクラスのオブジェクトとして宣言しているので、そのスコープ内で参照Foo
すると、それがaであるかのように参照され、その結果、のサイズが2に等しいと解釈されます。myBar
myBar
Foo
thisArray
ivar
thisArray
クラス内のサイズに影響を与えて、その「正しい」サイズをオブジェクトBar
の配列内で認識できるようにする方法はありますか?Foo
ベクトルを使用しますが、arduinoプラットフォームでは使い勝手が良くありません。Fooクラス内にサイズ100の配列を作成することもできますが、メモリの割り当てを意識しようとしています。