у меня получилось, после многих попыток, вот код:
GraphicsDeviceManager
{
private:
typedef boost::signal<void ()> DeviceLost;
DeviceLost deviceLost;
public:
Register_DeviceLostHandler(const boost::function<void ()> &handler)
{
deviceLost.connect(slot);
}
Unregister_DeviceLostHandler(const boost::function<void ()> &handler)
{
//deviceLost.disconnect(slot);
}
}
class GameBase
{
private:
GraphicsDeviceManager* graphics;
public:
GameBase()
{
graphics = new GraphicsDeviceManager();
graphics->Register_DeviceLostHandler(boost::bind(&GameBase::OnDeviceLost, this));
}
void OnDeviceLost()
{
//do some stuff
}
}
хорошо, этот код работает, как и должно быть, за одним исключением, если я раскомментирую инструкцию deviceLost.disconnect (handler), я получаю ошибки компиляции, такие как:
ошибка C266 «boost :: operator ==»: 4 перегрузки имеют похожие преобразования.
Итак, почему это происходит? Вы знаете какой-нибудь другой способ выполнить то, что я пытаюсь?