我得到一個指向基類的指針(實際上是指向某個派生類的指針)。然後我想調用該派生類的函數,但我不知道它是哪一個。鑄造到一個類並從兄弟類調用函數?
class Base
{
};
class DerivedOne : public Base
{
public:
void functionA()
{ int x = 0; }
};
class DerivedTwo : public Base
{
public:
void functionA()
{ int x = 0; }
};
int main()
{
Base* derivedTwoPtr = new DerivedTwo();
reinterpret_cast<DerivedOne*>(derivedTwoPtr)->functionA();
return 0;
}
這是按我想要的方式工作,但我不得不說它看起來相當狡猾。它是否定義了行爲?如果沒有,是否有合法的方式來動態解決這個問題?
你已經得到了如何做你想要的答案;回答你的問題的其他部分,不,這完全是未定義的行爲。 – 2009-10-05 07:03:56