次のシナリオがあります。2 つの基本クラスがあります: Base1、Base2、および 2 つの派生クラス: Derived、sysCommandExecutor は次のように派生します。
#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 内で "Derived" クラスのこの関数を呼び出したいのですが、dynamic_cast が失敗します。それは他の誰かのコードであるため、sysCommandExecutor クラスで関数を作成できません。sysCommandExecutor クラスの ptr ポインターを派生クラス オブジェクトを指すようにする方法は??
前もって感謝します