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がある場合は、関数を正確な型にする必要があります。2番目はここの場合です(例えば&get<0, GeometryType>)。

于 2012-04-30T14:53:33.750 に答える