我需要在嵌入的Posix中编译bind
函数,并且无法使用boost::bind
或std::bind
。
所以我想拆分这个功能:
threadReducer.reduce(boost::bind(&DepthMap::observeDepthRow, this, _1, _2, _3), 3, height-3, 10);
函数observeDepthRow:
void DepthMap::observeDepthRow(int yMin, int yMax, RunningStats* stats)
并且功能减少:
void IndexThread::reduce(boost::function<void(int,int,RunningStats*)> callPerIndex, int first, int end, int stepSize = 0)
Plz,帮我拆分功能,我不擅长C ++
答案 0 :(得分:0)
如果您不能使用boost或c ++ 11 ..那么在这种情况下您可以尝试这样:
void IndexThread::reduce(void(*function)(int,int,RunningStats*), int first, int end, int stepSize = 0)
并制作observeDepthRow static
static void DepthMap::observeDepthRow(int yMin, int yMax, RunningStats* stats)
然后你可以这样称呼它:
threadReducer.reduce(observeDepthRow, 3, height-3, 10);
虽然在这种情况下,如果您不希望这样做,您必须制作方法static
,所以请查看this。