0

VisualC++に取り組んでいます。この構文を手伝ってくれませんか。

  class CVisionSystem
  {
    public:
CVisionSystem();
 ~CVisionSystem(void);


int Init();


    private:

 PvDevice device;
// PvStream object
      PvStream stream;
// Buffer

  CustomPipeline *pipeline;

// GEV Parameters
PvGenParameterArray *deviceParams;
    PvGenInteger *parTLLocked;

 };

int CVisionSystem::Init()
 {
 deviceParams = device.GetGenParameters();    
 parTLLocked = dynamic_cast<PvGenInteger *>( deviceParams->Get( "TLParamsLocked" ) );

 }

deviceParmsは有効な値を取得しますが、parTLlockedはNULL値を取得し、エラーが発生します:「エラー式を評価できません。_vfptrCX0030およびmthisCX0076。

ParTLLockedの問題は何でしょうか?

4

3 に答える 3

1

deviceParams->Get( "TLParamsLocked" )に動的キャストできない型を返すと思いますPvGenInteger *。戻りタイプは、このdynamic_castがnull以外の値を返すために、のサブクラスまたは親クラスPvGenInteger(またはおそらく同じクラス)へのポインターである必要があります。

于 2013-01-10T10:04:46.610 に答える
1

dynamic_castターゲットタイプにキャストできない場合は、null値を返します。これを確認する必要があります。

動的キャストを成功させるには、キャストされるオブジェクトが、その継承ツリーのどこかにターゲットクラスタイプを持っている必要があります。つまり、ターゲットタイプは、実行時のオブジェクトの実際のタイプまたはその親クラスの1つである必要があります。つまり、実際にターゲットタイプのオブジェクトのみをダウンキャストできます。

于 2013-01-10T10:04:53.423 に答える
0
PvGenParameterArray *lDeviceParams = d->lDevice.GetGenParameters();    
lTLLocked = dynamic_cast<PvGenInteger *>( lDeviceParams->Get( "TLParamsLocked" ) );
于 2013-01-10T10:10:49.870 に答える