多态指针

时间:2017-04-05 15:46:51

标签: c++ c++11 pointers polymorphism

我有一个继承层次结构:class1和class2继承自抽象类abstractClass。在我的主程序中,我创建了以下句柄:

abstractClass * myPointer = new class1(parameter1);

myPointer也可以指向class2对象。我将使用myPointer进行多态调用。 现在我有另一个使用合成的类(我们说class3),它有一个成员,它是一个指向abstractClass的指针。即:

class class3
{
    private:
    abstractClass *ptr;
};

我希望能做到:

abstractClass * myPointer = new class1(parameter1);
class3 *myObject=new class3(myPointer);
像这样,类class3有一个指针,用于进行多态调用。 问题是我必须做一个深层复制,即在class3的构造函数中做得不好:

abstractClass * myPointer = new class1(parameter1);
class3 *myObject=new class3(myPointer);

class3::class3(abstractClass *pointer)
{
    ptr = pointer; //ptr is the member of the class
}

我必须做一份深刻的副本。我无法写

ptr = new Class1(.....)
or
ptr = new Class2()

因为我不知道从abstractClass *指针指向的对象类型。我能怎么做? (可能我必须使用downcast和if来理解对象的类型。但是有更优雅的解决方案吗?)

我使用g ++ -std = gnu ++ 11编译器

提前致谢

0 个答案:

没有答案