【发布时间】:2012-10-20 10:54:18
【问题描述】:
这是代码,非常简单。
class Foo
{
public:
void print()
{
std::cout<<"Foo::print\n";
}
};
Game::Game()
{
{
Foo foo;
player.onclick = bind(&Foo::print,foo);
}
player.onclick();
}
内部作用域完成后 foo 对象超出作用域,但 print 方法仍然被调用,我猜这是因为 player 持有对 foo 对象的引用?有没有办法阻止这种情况发生?我不希望对象在应该被销毁时保持活动状态并接收事件。
谢谢。
【问题讨论】:
-
该代码并不简单。剩下的在哪里?
-
您还需要什么? bind 是 std::tr1::bind。 onclick 是一个像这样的简单函数 std::function
onclick;也删除了不必要的播放器内容。 -
所以你使用 tr1::bind。在这种情况下,我需要包括、主要等