LINUX.ORG.RU

boost::signal disconnect по slot_function_type


0

0

Не могу сделать обертку над disconnect, вот бессмысленный и беспощадный код, демонстрирующий суть проблемы.

#include <iostream>
#include <boost/signal.hpp>
#include <boost/bind.hpp>

using namespace std;
using namespace boost;

signal<void()> sig;

class Foo
{
public:
void quit() { cout << "Foo::quit()" << endl; }
};

void connect(const signal<void()>::slot_function_type &slot)
{
sig.connect(slot);
}

void disconnect(const signal<void()>::slot_function_type &slot)
{
sig.disconnect(slot); // Вот эта строчка вызывает ошибку
}

void quit ()
{
cout << "quit" << endl;
}

int
main(int argc, char *argv[])
{
Foo f;
connect(bind(&Foo::quit, f));
connect(&quit);
sig();
return 0;
}

Как заставить это работать не знаю. Boost 1.39.0-2 из репозитория arch linux.

Re: boost::signal disconnect по slot_function_type

как же убог цпп

CL-USER ()
Ответ на: Re: boost::signal disconnect по slot_function_type от CL-USER

Re: boost::signal disconnect по slot_function_type

Ты даже не представляешь себя как...

И раньше ведь вроде работало, поломали что ли boost. Хорошо хоть по конектеру можно дисконектить.

plambir ()

Re: boost::signal disconnect по slot_function_type

boost::signal:connection c = signal.connect(slot)
c.disconnect()

kitov ★★★ ()
Ответ на: Re: boost::signal disconnect по slot_function_type от kitov

Re: boost::signal disconnect по slot_function_type

Сейчас так и делаю. Просто раньше он вроде работал и дисконектил по имени функции или метода, что на мой взгляд элегантнее выглядело. А сейчас напрочь отказывается.

plambir ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.