4

私はできません:

Vector2i vec(0, 1, 2);
cout << vec.norm() << endl;

それは言及するコンパイラエラーを与えるので:THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPESいくつかの失敗したアサーションで。

私はそれをできた:

Vector2i i_vec(0, 1, 2);
Vector2f f_vec;
f_vec = i_vec.cast<float>();
cout << f_vec.norm() << endl;

これは明らかに機能します。

norm質問:メソッドが に対して定義されていない理由はVectorXi?

たぶん Eigen は の要素型を使用してVectorの戻り値の型を決定します (この場合、 の戻り値の型に対して定義されないのnorm()は理にかなっています)?norm()int

ちょっと興味があるんだけど。

4

1 に答える 1

4

関数の動作を正しく覚えていればnorm()、何らかの入力の平方根が必要です。平方根は、明らかに、多くの場合、整数ではありません。一方、固有パッケージのロジックを思い出すと、特定の要素 ( int, double, complex<double>) の行列を宣言すると、この型の要素のみで機能します。だからあなたはあなたの提案に完全に正しかった.

于 2013-06-04T16:14:46.840 に答える