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

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 не определены, и поэтому этот код не должен компилироваться (но в документе AlienDetector факт, что этот код будет работать).

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

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

  • 1
    Пример кода содержит функцию запуска позже . Однако пример выглядит неполным.
  • 0
    @Petesh, так почему он предлагает скомпилировать и запустить этот код, зная тот факт, что он неполон?
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

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

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

AlienDetector::AlienDetector() {}

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

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

  • 0
    Не могли бы вы опубликовать более полный пример, включающий 2 разных класса, соединенных вместе с сигналами и слотами?
  • 0
    ты пытаешься использовать gtkmm? или понимаете эту библиотеку?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню