我有三个类:Generic、CFG 和 Evaluator。
这是通用的:
class Generic: public virtual Evaluator, public CFG, public LCDInterface {
这是CFG:
class CFG : public virtual Evaluator {
并且 Evaluator 没有子类化。
我提供了一个名为 PluginLCD 的 DLL,它有一个名为 Connect 的方法:
void PluginLCD::Connect(Evaluator *visitor) {
visitor_ = dynamic_cast<Generic *>(visitor);
if(!visitor_)
return;
type_ = visitor_->GetType();
}
以下是我通过 scons 编译 DLL 的方式:
env.SharedLibrary(['PluginLCD.cpp', 'Evaluator.cpp', 'Generic.cpp', 'CFG.cpp'])
现在,我的代码中有两种情况。一个是在类LCDControl
,哪个子类CFG
。另一种情况是上面 whereGeneric
子类Evaluator
和CFG
. Evaluator 有一个名为 LoadPlugins 的方法,正如其名称所暗示的那样,this
通过 method 传递给 DLL Connect
。好吧,在第一种情况下Generic *
, Connect 中的演员应该返回NULL
。但是,在第二种情况下,据我所知,应该返回一个有效的指针。它似乎不会以这种方式发生。我错了吗?