2014-01-06 2 views
0

я после официальной документации по libsigc++-2.0 и я нашел this example:Ошибка в официальном примере 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

Пример кода содержит функцию запуска позже (https://developer.gnome.org/libsigc++-tutorial/stable/ch03.html). Однако пример выглядит неполным. – Petesh

+0

@ Пойдем, почему он предлагает скомпилировать и запустить этот код, зная тот факт, что он неполный? – user2485710

+0

В дикой догадке, неполная документация. Вы можете вносить в журнал вопрос об этом, чтобы его можно было решить. – Petesh

ответ

1

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

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

AlienDetector::AlienDetector() {} 

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

Я отправил полностью функциональный пример on github делают на основе example1.cpp является первым примером, example2.cpp является один с помощью член функция.

+0

Не могли бы вы опубликовать более полный пример с участием двух разных классов, подключенных вместе с сигналами и слотами? – user2485710

+0

Вы пытаетесь использовать gtkmm? или понять эту библиотеку? – Petesh

+0

Я пытаюсь понять, как работает libsigC++ и как его использовать. – user2485710

Смежные вопросы