【发布时间】:2011-10-25 07:00:25
【问题描述】:
我需要一个成员函数来传递给第三方外部方法:
box_self_intersection_d(mycallback);
box_self_intersection_d 是第三方外部静态方法,我无法修改。 mycallback 是我想将它传递给box_self_intersection_d 的方法,它是一个类函数,并且正在访问这个类中的一些成员(对这个类和mycallback 具有完全控制权)
我是否可以将类成员函数用作回调而不将它们声明为静态函数?
编辑:mycallback 的签名是(const box &boxA, const box &boxB),其中box 是来自第三方提供商的特殊类。
而signature for box_self_intersection_d 是
void box_self_intersection_d(RandomAccessIterator begin,RandomAccessIterator end,Callback callback)
【问题讨论】:
-
这种方法有意义吗?请记住,非静态成员函数仅在类instance 中才有意义。因此,您需要以某种方式将成员函数 和 实例都传递给回调,但是哪个实例?
-
如果方法是固定的并且无法更改,那么问题中的一些信息就是该方法的签名是什么,因为它决定了问题的约束。
-
这个问题有解决办法吗?我面临着完全相同的问题,但尽管一些答案被投票赞成,但没有一个被标记为已接受的解决方案。
标签: c++