0

複数のクラスを継承するインターフェースがあります。

    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 などを使用したソリューションはありません。

4

3 に答える 3