0

「obj」という名前のクラスと「aggregate」という名前の別のクラスがあります。

2 つ目は最初のものから派生したものです。

クラス「obj」は整数のみを保持します。「集約」はそれ以上のものではありません(「メソッド」のみ)。

class obj{
public:
  int t;
}

「obj」を返す関数があります

obj pop();

その結果をクラス「集計」の変数に割り当てる必要があります。

集約 a;a=pop();

私はそれを次のようにしようとします:

a=static_cast<aggregate>(pop());
a=dynamic_cast<aggregate>(pop());

基本的にスタック上で構造体の値が渡されるため(基本的に整数)、なぜ私がすべきか理解できません:

a=*((aggregate*)(&pop()));
4

1 に答える 1

1

ポリモーフィズムを実現するには、ポインターまたは参照を使用する必要があります。

#include <stdlib.h>

class obj
{
    protected:
        virtual ~obj () {};
        int data;
};

class agregate : public obj
{
    public:
        void actionA () {};
        void actionB () {};
};

obj * pop ()
{
    return new agregate;
}

int main (int argc, char * argv [])
{
    agregate * a = dynamic_cast <agregate *> (pop () );

    return EXIT_SUCCESS;
}
于 2014-06-15T13:49:34.887 に答える