Здравствуйте, гость ( Вход | Регистрация )
SABROG | Дата 9.3.2010, 0:56 |
Может я что-то путаю, но разве можно в дочернем классе переопределять private-элементы? Вроде бы только protected. Я не пробовал, но вроде как это ограничение не распространяется на чистые виртуальные функции. К тому же это опять не решит нашей проблемы, спецификатор доступа у наследуемого класса для такой функции можно выбрать любой |
|
flareguner | Дата 9.3.2010, 0:45 |
вроде макрос Q_OBJECT делает что-то подобное. Если тролли поменяют объявление метода run() на такое, то возможно ошибок будет меньше:
Может я что-то путаю, но разве можно в дочернем классе переопределять private-элементы? Вроде бы только protected. |
|
SABROG | Дата 9.3.2010, 0:18 |
вроде макрос Q_OBJECT делает что-то подобное. Если тролли поменяют объявление метода run() на такое, то возможно ошибок будет меньше:
|
|
flareguner | Дата 9.3.2010, 0:01 |
это уже не запуск, а простой вызов метода. только тогда не понятно зачем QThread использовать. Так и есть. Интересно почему тролли не поместили метод run() в protected секцию, тогда бы можно было бы его спокойно наследовать и при этом невозможно было бы его вызвать за пределами класса QThread и наследников, а только через start(). Брр, ничего не понимаю, он в protected секции. Почему-то его возможно вызвать ? Ой, кое-кто его вытащил "наружу":
Вопрос к знатокам C++, возможно ли создать класс с protected членами, которым бы невозможно было бы поменять спецификатор доступа при наследовании? Теоретически можно сделать run() чистой виртуальной функцией с private спецификатором доступа. Вот только наследование от QObject'a может не дать это сделать. вроде макрос Q_OBJECT делает что-то подобное. |
|
SABROG | Дата 8.3.2010, 23:06 |
это уже не запуск, а простой вызов метода. только тогда не понятно зачем QThread использовать. Так и есть. Интересно почему тролли не поместили метод run() в protected секцию, тогда бы можно было бы его спокойно наследовать и при этом невозможно было бы его вызвать за пределами класса QThread и наследников, а только через start(). Брр, ничего не понимаю, он в protected секции. Почему-то его возможно вызвать ? Ой, кое-кто его вытащил "наружу":
Вопрос к знатокам C++, возможно ли создать класс с protected членами, которым бы невозможно было бы поменять спецификатор доступа при наследовании? Теоретически можно сделать run() чистой виртуальной функцией с private спецификатором доступа. Вот только наследование от QObject'a может не дать это сделать. |
|
DEADHUNT | Дата 8.3.2010, 22:57 |
так как ты запустил поток через run(), а не через start(). это уже не запуск, а простой вызов метода. только тогда не понятно зачем QThread использовать. |
|
flareguner | Дата 8.3.2010, 22:55 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). Вот это я облажался. Ну что же, больше всем вам спасибо что помогли и не поленились разгребать пионерский г-нокод. |
|
SABROG | Дата 8.3.2010, 22:51 |
Всё, нашел:
flareguner, я ж просил все исходники выложить. Вторую ссылку не заметил Цитата Это тоже мысль. Сейчас опробую. Да не поможет. Твоя проблема в waitForFinished(), он блокирует основной цикл событий, так как ты запустил поток через run(), а не через start(). |
|
flareguner | Дата 8.3.2010, 22:46 |
Цитата Что если запустить mencoder через утилиту nice, с пониженным приоритетом? Да еще и QThread setPriority() пониже выставить? Это тоже мысль. Сейчас опробую. |
|
BRE | Дата 8.3.2010, 22:46 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 19:58 |