Название: связь между классами ? Отправлено: remiznik от Июль 29, 2008, 06:06 Есть большой проект и есть главный класс А соответственно А.срр и А.h !Есть подчиненный класс В он создается внутри А , но и у него есть подчиненный класс который создается внутри него С ! вопрос как при изменение каких-то параметров класса С изменить параметры класса А ? все классы в отдельных файлах !!!
Примечание: A B C это окна и соответственно А главное оно вызывает В ! а B уже вызывает С и должно изменять параметры объекта "a" созданного классом А. Код: //A.h Название: Re: связь между классами ? Отправлено: ритт от Июль 29, 2008, 06:40 эээ...мммм...*???
*указатели *сигналы *события Название: Re: связь между классами ? Отправлено: Red Devil от Июль 29, 2008, 10:25 Если используюется Qt (а судя по разделу именно так), то легче всего использовать сигналы.
В классе С определяешь сигнал, типа ValueChanged(int nValue) (или вообще можно ссылку на самого себя передать, что можно было любые методы класса дергать). В классе С, там где нужно уведомить класс А пишешьт emit ValueChanged(nValue). Теперь нужно добавить слот в класса А, предположим ValueChanged(int nValue), и в каком-то месте программы связать их. Я бы связывание сделал в классе B - т.к. он может получить указатель на класс (при создании), и класс он владеет классом С. connect(pClassC, SIGNAL(ValueChanged(int)), pClassA, SLOT(ValueChanged(int))); Название: Re: связь между классами ? Отправлено: developer от Июль 29, 2008, 15:13 Кажеться в куте вложенные класси не поддержывают сигналы и слоты. Нужнопридумать хороную архитектуру. И по моему такой уровень вложености означает - непродуманная архитектура.
Название: Re: связь между классами ? Отправлено: neosapient от Июль 29, 2008, 18:53 Поскольку главный класс А, то логично настраивать сигналы именно в этом классе
connect(this, SIGNAL(A_signaled()), B, SLOT(B_sloting())); connect(C, SIGNAL(C_signaled()), this, SLOT(A_sloting())); Название: Re: связь между классами ? Отправлено: SASA от Август 11, 2008, 18:06 Полностью согласен с Red Devil. У меня тоже много уровневая архитектура. Связывание signal/slot в классе B вполне логично, и понятно. А из того что класс А главный не следует то, что он должен знать о потомках своего потомка и заботиться о связывании.
|