0

Point Cloud Library API を使用して、キーボード コールバック関数を 3D ビューアに登録しようとしています。

これを行うには、次のようにします。

viewer->registerKeyboardCallback(&(RailExtraction::keyboard_callback), (void*)(&gt_data));

しかし、次のエラー メッセージが表示されます。

note: no known conversion for argument 1 from 'void (RailExtraction< pcl::PointXYZI >::*) 
(const pcl::visualization::KeyboardEvent&, void*)' to 'void (*)(const pcl::visualization::KeyboardEvent&, void*)'

エラーメッセージを理解しようとしています。私は何を意味するかを理解していますが、何voidを意味しますか??void *void(*)(...)void(RailExtraction< pcl::PointXYZI >::*>(...)

4

1 に答える 1

3

の間違ったバージョンを使用しているという問題を解決しましたregisterKeyBoardCallBack。私は現在、この署名を使用しようとしています:

registerKeyboardCallback (void (*callback) (const pcl::visualization::KeyboardEvent&, void*), void* cookie = NULL)

しかし、私はこの署名を使用する必要があります: registerKeyboardCallback (void (T::*callback) (const pcl::visualization::KeyboardEvent&, void*), T& instance, void* cookie = NULL)

これは、keyboard_callback関数がクラスの一部であるため、クラスのインスタンスを指定して、keyboard_callback関数が使用するインスタンスをコンパイラが判断できるようにする必要があるためです。したがって、私の新しい呼び出しはregisterKeyboardCallBack次のようになります。

viewer->registerKeyboardCallback(&RailExtraction::keyboard_callback, *this, (void*)>_data);

于 2013-01-11T21:24:03.400 に答える