複数のクラスを継承するインターフェースがあります。
class someInterface
{
virtual void someMethod() = 0;
}
class A : public someInterface
{
public:
void someMethod()
{
//Do something
}
}
class B : public someInterface
{
public:
void someMethod()
{
//Do something
}
}
class C : public someInterface
{
public:
void someMethod()
{
//Do something
}
}
クラス A、B、C のそれぞれについて、コンテナー クラス内の実際の型のサイズが異なる配列を作成しました。
class AContainer
{
public:
A As[10];
}
class BContainer
{
public:
B Bs[5];
}
etc...
さらに、「SomeInterface」へのポインターの配列があり、このような実際の配列のそれぞれへのポインターが必要です。
#define SOMEINTERRFACE_SIZE 3
someInterface *array[SOMEINTERRFACE_SIZE];
array[0] = AContainer.As; //Could also just be &AContainer.As[0]
array[1] = BContainer.Bs;
array[2] = CContainer.Cs;
for (int i = 0; i < SOMEINTERRFACE_SIZE; ++i)
{
int elements = //Here i need a solution to get the size
//So i can iterate through the array, which the pointer points to.
for (int i = 0; i < elements; ++i)
{
//Call the interface method on each element.
}
}
someInterface ポインターを介して実際の配列のサイズを取得することはできないため、someInterface 配列を使用する必要がある場合に問題が発生します。
この問題の良い解決策は何ですか? これを解決するには、本当に助けが必要です。また、動的割り当てを使用したくないため、Arduino に書き込みを行っているため、vector<> や malloc などを使用したソリューションはありません。