Generic、CFG、および Evaluator の 3 つのクラスがあります。
一般的なものは次のとおりです。
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'])
さて、私のコードには 2 つのシナリオがあります。1 つはクラスLCDControl
内にあり、サブクラスCFG
です。もう 1 つのシナリオは、上記のGeneric
サブクラスEvaluator
とCFG
. Evaluator には LoadPlugins というメソッドがあり、その名前が示すように、this
メソッドを介して DLLに渡されますConnect
。最初のシナリオではGeneric *
、Connect のキャストは を返す必要がありますNULL
。ただし、2 番目のシナリオでは、私の知る限り、有効なポインターが返されるはずです。このようには起こっていないようです。私はこれについて間違っていますか?