LINUX.ORG.RU

Сообщения livid

 

Статус pkgcore?

А знает кто-нибудь как дела обстоят у pkgcore? Беглый просмотр показал, что последний коммит был почти год назад. Это потому что все хорошо, или потому что всем пофиг?

Ну заодно вопрос, если вдруг кто пользуется — оно адекватно работает, или с чудесами?

 

livid
()

Boost::signals и «внутренние» переменные объекта функции

Что-то мне совершенно взрывает мозги boost::signals2, и кстати boost::signals ведет себя точно так же.

Допустим, есть такой код:

#include <iostream>
#include <boost/signals2.hpp>

using namespace std;
using namespace boost::signals2;

class test_class {
public:
    int a;
    test_class() : a(0) {};
    int operator()() {
        a++;
        return a;
    }
};

int main(int argc, char *argv[])
{
    signal< int()> sig;
    test_class test;
    sig.connect(test);
    cout << *sig() << endl;
    cout << test.a << endl;
}

Он выводит следующее:

$ ./a.out
1
0

Насколько я понимаю всю парадигму сигнал-слотов, sig() должен вызвать test.operator() и соответственно вернуть его значение. По разумной логике, test.a тогда должен быть 0+1=1 в момент получения его значения. А он почему-то 0!

ЧЯДНТ, или где я не понимаю идею?

Сразу оговорюсь, я нашел воркэраунд, но он НАСТОЛЬКО горбатый, что страшно о нем даже думать...

И да, на всякий случай,

//...snip...
    cout << test() << endl;
    cout << test.a << endl;
//...snip...
выдает положенные ему
$ ./a.out
1
1

livid
()

RSS подписка на новые темы