說我有一個父類Parent
和子類Child1
和Child2
具有後實施MyInterface
:如何從父轉換爲子女學費類的接口
class Parent {
public:
Parent();
virtual ~Parent();
virtual void MyMethod();
}
class MyInterface {
public:
virtual ~MyInterface() {}
virtual void MyInterfaceMethod() = 0;
}
class Child1 : public Parent {
public:
Child1();
virtual ~Child1();
}
class Child2 : public Parent, MyInterface {
public:
Child2();
virtual ~Child2();
virtual void MyInterfaceMethod() override;
}
而且說我給一個Parent*
指針,我想檢查對象是否正在執行MyInterface
,如果是,則將其轉換爲MyInterface*
。
我試圖達到這樣說:
void MyFunction(Parent* p) {
MyInterface* i = dynamic_cast<MyInterface*>(p);
if (i != 0)
DoSomething();
else
cout << "Cannot do anything.";
}
但我總是等於0,表示這是從來沒有澆鑄成型MyInterface*
即使我肯定知道該對象具有良好的類型。
我該怎麼做到這一點?
什麼是多態性? – skypjack