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()正确地记住了一个函数的动作,它需要一些输入的平方根。显然,平方根在许多情况下都是非整数。另一方面,如果我记得 eigen 包的逻辑,一旦你声明了一个特定元素的矩阵 ( int, double, complex<double>),它只适用于这种类型的元素。所以你的建议是绝对正确的。

于 2013-06-04T16:14:46.840 回答