如何将.cast()方法应用于比较运算符的输出?

时间:2014-05-04 02:07:12

标签: c++ eigen

我想将阈值函数应用于一堆模糊值(浮点数):

template <typename Derived>
void Threshold(Eigen::ArrayBase<Derived>& params)
{
  params = (params >= 0.0f).cast<float>();
}

我的想法是,我最终得到了一堆1和0(float),其中曾经有模糊值。但是当我这样做时,我收到以下错误:

  

src / core / Neuron.h:在静态成员函数中'static void   神经元的阈值::(本征:: ArrayBase和放大器;)”:   src / core / Neuron.h:119:43:错误:预期的primary-expression之前   'float'params =(params&gt; = 0.0f).cast();                                              ^ src / core / Neuron.h:119:43:错误:预期';'在'浮动'之前make: * [src / core / Cell.o]错误1

显然,我没有正确使用cast方法。我查看了Documentation,它为cast方法提供了以下原型:

internal::cast_return_type< Derived,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Derived>::Scalar, NewType>, const Derived> >::type cast () const inline

我真的不明白这意味着什么,但我猜我可能会错过模板参数?

1 个答案:

答案 0 :(得分:1)

尝试:

params = (params >= 0.0f).template cast<float>();

这种用法基本上只是template关键字的重载。在这里,它提示您尝试调用成员模板的编译器。有关详细信息,请参阅this