![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
fray |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: нет Всего: 0 |
Вобщем проблема такая.
есть класс. в котором я пытаюсь установить сигнал и по сигналу получать дуступ к переменной класса, но переменные класса не видятся внутри хендлера сигнала, о чем мне говорит компилятор, undeclared 'std::list <int> L' в функции handler()
попытки лечит extarnal "C" { handler() {....} }, указание хендлера как static, результат тотже функция singal кушает хендлер но компилетр ругается что undeclared 'std::list <int> L' в функции handler(), может кто-то решал такую же проблему ? вроде бы решаемо если
Но это уже как-то не похоже на С++. Спасибо. Это сообщение отредактировал(а) fray - 21.10.2008, 15:29 |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
static - функции не видят членов класса Это сообщение отредактировал(а) mes - 21.10.2008, 15:29 |
|||
|
||||
fray |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: нет Всего: 0 |
А если сделать лист глобальным, будет работать ?
Это сообщение отредактировал(а) fray - 21.10.2008, 15:32 |
||||
|
|||||
vTictor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
лучше в метод передавать ссылку или указатель на лист. А вообще, может у тебя и в исходниках опечятка и вместо signal написано singal ?? ![]() |
|||
|
||||
fray |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: нет Всего: 0 |
да там опечатка, там signal который принуждает передавать аргумент handler'у тока int поэтому не удасться передать ему ссылку на лист. |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
будет. Signal имеет сишное происхождение, поэтому использовать наряду с классами напрямую не получится, так как не понятно какому из объектов переселать статический сигнал. В классе можно определить статическую проксифункцию для принятия сигнала, а также добавить функции для регистрации обьектов, которые хотят получать этот сигнал. В общем все зависит от того чего конкретно Вы хотите добиться. (в приведенных выше описаниях не хватает как минимум слова объект, чтоб понять Вашу идею) Это сообщение отредактировал(а) mes - 21.10.2008, 17:59 |
|||
|
||||
fray |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: нет Всего: 0 |
Просто хотелось иметь Класс как замкнутый объект с внутренней переменой list L; и соотвественно иметь внутренний хендлер сигнала... и тд. и тп. также соая ситуация упрощается тем что я имею только один объект(Class Test), ну вобщем понятно раз функция сишная, то и писать придется по сишному. Это сообщение отредактировал(а) fray - 22.10.2008, 11:02 |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Ну если объект один , то используйте синглетон, например так :
а дальше смотрите под свои нужды Это сообщение отредактировал(а) mes - 22.10.2008, 13:01 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |