Ошибка в официальном примере libsigc ++ 2.0?

Я следовал официальной документации для libsigc++-2.0 и я нашел этот пример:

class AlienDetector
{
public:
AlienDetector();

void run();

sigc::signal<void> signal_detected;
};

void warn_people()
{
cout << "There are aliens in the carpark!" << endl;
}

int main()
{
AlienDetector mydetector;
mydetector.signal_detected.connect( sigc::ptr_fun(warn_people) );

mydetector.run();

return 0;
}

Как вы можете видеть как run() функция и конструктор для AlienDetector класс не определен, и поэтому этот код не должен компилироваться (но документ принимает как должное тот факт, что этот код будет работать).

Еще более странным является тот факт, что если я определю оба run() и конструктор для класса, я все равно не вижу эффекта библиотеки, видимо сигнал не работает, и когда run называется в main слот не активирован.

Я забыл о чем-то здесь? Как эта вещь должна быть переписана?

0

Решение

Документация кажется неполной.

Самая базовая версия кода должна выглядеть так:

AlienDetector::AlienDetector() {}

void AlienDetector::run() {
sleep(3); // wait for aliens
signal_detected.emit(); // panic
}

Я разместил полностью функциональный пример на основе make на GitHub, example1.cpp — первый пример, example2.cpp — тот, который использует функцию-член.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]