转换基类的双指针

vap*_*apo 3 c++ inheritance

我说有一个抽象类Animal.从这节课,我有很多继承类,比如Cat,Dog,Mouse.我有一个方法,我希望能够指针指向这些对象的指针.所以void someMethod(Animal **anAnimal);

这是如何完成的?看来我不能像这样向上投球.我正在尝试以下方法:

Dog *d = new Dog(x); //some parameter x.
Animal **animal = &d;
someMethod(animal);

//where someMethod has the method signature...
void someMethod(Animal **anAnimal);
Run Code Online (Sandbox Code Playgroud)

我做错了什么,我怎样才能完成我的尝试?

Jam*_*lis 9

你需要一个Animal*:

Dog* d = new Dog(x);
Animal* a = d;
Animal** animal = &a;
someMethod(animal);
Run Code Online (Sandbox Code Playgroud)

一个Animal**只能指向一个Animal*.如果它可以指向一个非常糟糕的话Dog*.如果可以的话,你可以这样做:

Dog* d = new Dog(x);
Animal** animal = &d;
*animal = new Hippopotamus();
Run Code Online (Sandbox Code Playgroud)

现在d指向a Hippopotamus,这确实是非常错误的.