0

ヤコビ行列の列と行の値を見ようとすると、CXX0059: Error: left operand is class not a function name in VS2010 のようなエラーが発生します。

例えば; 私は次のような行列を持っています

MatrixXf j = MatrixXf::Zero(2,mList.size());
...
...
   for(...)
   {
     j(0, col) += (-mList[i]->mLength*sin(angle));
     j(1, col) += ( mList[i]->mLength*cos(angle));
   }

この部分をデバッグすると、変数 j(0,col) の監視に失敗します。関数名ではないかもしれませんが、何らかの値が含まれています。つまり、マトリックスは 10 個のセルで構成されていますが、ビジュアル スタジオから得られるのは 1 つの float 値だけです。

デバッグの sc は次のとおりです。

デバッグ画面

各セルの値を監視する際の助けに感謝します。

4

1 に答える 1

1

classでj(0, col)オーバーロードされた構築呼び出し。このような構築は、ネイティブ コードのデバッガーによって評価されません。マトリックスのコンテンツを表示するには、 のインスタンス内のデータへのポインターを見つける必要があります。ほとんどの場合、データの配列を指す型になります。デフォルトでは、単一の float 値としてデバッガーに表示されます。ただし、ここで説明するように手動でサイズを指定して、次のように配列を展開できます。operator()()MatrixXfMatrixXffloat*j.ptr,10

ファイルに特別な表示ルールを記述することで、このアプローチをさらに強化できautoexp.datます。ここで包括的なチュートリアルを参照してください。

于 2012-11-20T09:50:31.220 に答える