怎样才能完成一个一次性的监听器呢?

listener->onTouchBegan = [&](Touch* touch, Event* event)
{
Point pos = touch->getLocation();
pos = Director::getInstance()->convertToGL(pos);
/**/
_eventDispatcher->removeEventListener(listener);
}
想完成一个类似的监听器,但是这里面的remove是不会执行的,好像是因为内存不一致。
那么怎样才能完成目标的共嗯那个呢?
求大神解答

最简单的做个全局标记,当回调过一次,那么接下来的回调都忽略