0
我有以下情形。有兩個基本類別:基礎1,和Base2和兩個派生類:衍生sysCommandExecutor其推導如下:使用dynamic_cast指向其他派生類對象
#include <iostream>
using namespace std;
class Base1 { virtual void dummy() {} };
class Base2 { virtual void dumy() {} };
class Derived: virtual public Base1, public Base2
{ int a; };
class sysCommandExecutor : public Base2
{
public:
int b;
Base1 *ptr;
void func(void);
};
void sysCommandExecutor::func(void)
{
Derived *d;
d = dynamic_cast<Derived *>(ptr);
if (d == NULL)
std::cout << "This is NULL" << std::endl;
else
{
// Call a function of Derived class
}
}
int main() {
try {
sysCommandExecutor * sys = new sysCommandExecutor;
sys->func();
return 0;
}
}
我想打電話給內FUNC「派生」類的此功能,但dynamic_cast的失敗。 我無法在sysCommandExecutor類中創建函數,因爲這是別人的代碼。 如何使sysCommandExecutor類中的ptr指針指向派生類對象?
在此先感謝
什麼是ptr的assinged?在你的代碼中它是一個未初始化的指針 – Gir 2012-08-12 15:24:08
代碼看起來很奇怪。似乎沒有正確使用多態性。你有一個派生類指向同一個實例。 – 2012-08-12 15:28:56
http://codepad.org/f65rqtYq'沒有錯誤或程序輸出。' – Gir 2012-08-12 15:35:23