![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
наверное я вас не совсем верно понял.
или вы... вот я смотрю на ваш код, и абсолютно не въезжаю, как тут использовать QThread ? нет, т.е. я представляю, но moc откажется работать. а вы утверждаете что нет. в общем запутали вы меня... Добавлено через 3 минуты и 49 секунд
я понимаю это так. но повторюсь, моc`у это не понравится. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
значит я не до конца понял задание.. Я думал вопрос состоит в иной, чем на данный момент имеется, организации библиотеки т.е пример был ориентирован на избавление от перегрузки Run у QThread. Можно конечно и без шаблонов, с использованием Функционального объекта с виртуальной функцией,
ну и использовать так :
Это сообщение отредактировал(а) mes - 11.3.2010, 12:33 |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
А если этот код разделить на 2 части, то какая из них будет принадлежать библиотеке, а какую будет писать сам пользователь класса? Еще такой вопрос, не будет ли проблемы с функциональным объектом, когда библиотека попытается получить адрес функции для передачи этого адреса в API целевой системы? Это сообщение отредактировал(а) SABROG - 11.3.2010, 12:18 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну так разделено же.. верхний блок кода условно-библиотечный , а нижний условно-пользовательский.
А зачем ей (АПИ) адрес функции фо (функционального объекта) ? пусть Thread свою функцию и отдает, в которой будет вызывать уже фо |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Понял. А как организовать доступ к членам класса QThread из функционального объекта? Делать их friend'ами?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
у thread есть публичный интерфейс (start, terminate, priority.. ) - вот им и нужно пользоваться.. Если вопрос как получать thread в котором сейчас работает фо, то смотрите часть кода после // или Если ж речь о данных необходимых для работы фо, то они должны быть членами фо, а не thread`a, что и пытался показать конструктором в коде. Вобщем вопрос непонятен.. если ответил не на то , перефразируйте, плиз |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
В принципе у QThread есть несколько protected членов, с которыми необходимо работать. Например exec(), чтобы запускать или не запускать локальный цикл событий.
Как я понял "operator ()" что-то типа безымянного метода? Это мало чем отличается от "obj.someMethod()". В некотором смысле это тоже самое, что и ссылка на метод класса &MyClass::myMethod() и ссылки на экземпляр объекта класса. А если вообще утрировать, то это обычный callback? |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну а к thread`у она какое отношение имеет ? Qt запихнула все в один класс к ним и обращайтесь
ага, просто удобно вызывать.. можно любую другую функцию, или даже их набор.
зачем ерез окно лезть, когда дверь открыта Callback это применение. любая функция вызваная полиморфно является по сути колбяком |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Пользовательский объект должен быть на базе QObject'a, чтобы обеспечить межпоточное общение между объектами, да и доступ нужен к сигналам и слотам объекта QThread, чтобы подключение сделать. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
пользовательский объект это фо , вот он на базе QObjecta, если нужно, пусть будет |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |