Russian Qt Forum
Ноябрь 26, 2024, 07:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [solved]Многопоточка так чтобы поток знал о родительском классе  (Прочитано 3793 раз)
pethead
Гость
« : Октябрь 26, 2010, 18:30 »

я взял пример chip из поставки qt. и немного его модифицировал под многопоток (уменьшил число чипов - 40000 оч. много конечно для экспериментов).
объясняю суть: в каждом QGraphicsItem chip я создал поток, и в нем меняю случайно цвет самого chip.
в поток я передаю указатель на родительский chip, чтобы поток знал у кого нужно вызвать процедуру перерисовки после изменения цвета, доступ к канве разделен мутексом.

ошибка
use of undefined type 'Chip'
на операторе
сhip->update(chip->boundingRect());
в thread.cpp

посмотрите код. что то не получается у меня решить проблему ссылки в классе на поток, так чтобы сам поток знал о родительском классе. может такие проблемы как то не так решаются? помогите.
« Последнее редактирование: Октябрь 27, 2010, 07:41 от pethead » Записан
RedDog
Гость
« Ответ #1 : Октябрь 26, 2010, 22:29 »

Мож подключить надо заголовочник, что бы класс потока знал о существовании некоего родителя?
ЗЫ: код не смотрел, но судя по ошибке, компил просто не видит определение класса Chip
Записан
pethead
Гость
« Ответ #2 : Октябрь 27, 2010, 03:27 »

тогда получается зацикленный хидер.
класс чип должен знать о классе потока и наоборот.
я написал перед классом потока
class chip; вместо include chip.h
так компилится, но не дает вызвть методы
Записан
pethead
Гость
« Ответ #3 : Октябрь 27, 2010, 07:40 »

решил. добавил "chip.h" в реализацию потока (thread.cpp).
Записан
RedDog
Гость
« Ответ #4 : Октябрь 27, 2010, 08:10 »

тогда получается зацикленный хидер.
класс чип должен знать о классе потока и наоборот.
я написал перед классом потока
class chip; вместо include chip.h
так компилится, но не дает вызвть методы

что бы компилятор один раз включал тело заголовочника есть директива
Код:
#ifndef HEADERNAME_H
#define HEADERNAME_H

// header body

#endif
Записан
pethead
Гость
« Ответ #5 : Октябрь 27, 2010, 17:06 »

что бы компилятор один раз включал тело заголовочника есть директива
разумеется стоят эти директивы.
но глянь исходник. приложил же.
хотя я уже решил проблему.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.191 секунд. Запросов: 21.