2

我正在尝试将此处描述boost::geometry::get的函数传递给另一个函数,但我似乎无法正确处理。

我有:

template<typename StorageType = double,
         std::size_t D = 3>
class Derivative : public DerivativeBase<StorageType, D> {
public:
typedef typename DerivativeBase<StorageType, D>::results_t results_t;

template<typename Iterator, typename Geometry>
results_t operator()(Iterator& objIterator, StorageType (*getter)(Geometry const&))
...

并且编译器抛出:

error: no match for call to ‘(Derivative<double, 3ul>) (iterator&, <unresolved overloaded function type>)’

我尝试使用以下方法调用我的函数:

derivs = myDerivs(it, &boost::geometry::get<0>);

我想问题的一部分是因为我没有将参数传递给get,所以编译器无法确定Geometry函数签名中应该是什么类型。

我该如何去传递这个功能?

4

1 回答 1

0

这完全不特定于boost.geometry. 如果函数重载或者需要显式传递所有模板参数,则需要static_cast将函数精确到其类型。第二个是这里的情况(例如&get<0, GeometryType>)。

于 2012-04-30T14:53:33.750 回答