Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ООП


Автор: fuckingniger 20.6.2011, 12:17
Есть классы A, B, C.

функция из класса С должна иметь доступ к данным классов A и B

такое возможно?

Автор: azesmcar 20.6.2011, 12:26
к каким данным? хотя возможно конечно в любом случае, но ответ на дальнейший вопрос "А КАК" зависит от спецификатора доступа.

Автор: triclosan 20.6.2011, 12:27
сделайте С другом классов A и B


Автор: fuckingniger 20.6.2011, 12:32
спецификатор private

а как объект класса C поймёт с каким именно объектом он  имеет общие данные?

Автор: azesmcar 20.6.2011, 12:34
Цитата(fuckingniger @  20.6.2011,  12:32 Найти цитируемый пост)
спецификатор private


Цитата(triclosan @  20.6.2011,  12:27 Найти цитируемый пост)
сделайте С другом классов A и B


Автор: fuckingniger 20.6.2011, 12:46

Цитата(fuckingniger @  20.6.2011,  12:32 Найти цитируемый пост)
а как объект класса C поймёт с каким именно объектом он  имеет общие данные? 


Автор: azesmcar 20.6.2011, 12:48
Цитата(fuckingniger @  20.6.2011,  12:46 Найти цитируемый пост)
а как объект класса C поймёт с каким именно объектом он  имеет общие данные? 

О чем вопрос вообще непонятно. Какие еще общие данные?

Автор: triclosan 20.6.2011, 12:52
fuckingniger, у вас небось эти классы каким-то хитрым наследованием связаны, о котором вы почему-то умалчиваете

Автор: fuckingniger 20.6.2011, 12:57
я наверное плохо умею объяснять просто и + не понимаю чего-то элементарного.

Есть класс змейка 
Есть класс жизнь (или яблоко)
Есть класс смерть (-1 жизнь)

Эти классы никак не связаны(только жизнь и смерть от одного абстрактного наследуются)

итак мне надо знать куда  я походил змейкой. 
а чтобы узнать уперся ли я в яблоко или смерть или просто обычную пустую клетку, мне надо знать, что творится в масивах этих классов.

что скажете?

Добавлено через 2 минуты и 55 секунд
мне приходит в голову только делать их public и в maine уже эти ситуации разруливать, но это как-то некрасиво.

Автор: mes 20.6.2011, 13:12
походу Вас зациклело на слове класс.. Если не нужен класс - не делайте.. ООП от этого не пострадает, а наоборот обретет логичность.. Т.е. вначале нужно  думать не какие классы нужны, а преставить модель взаимодействия, и после уже навешивать эту модель на классы..

Добавлено @ 13:17
Цитата(fuckingniger @  20.6.2011,  11:57 Найти цитируемый пост)
итак мне надо знать куда  я походил змейкой. 

У Вас есть поле, на нем разложены предметы, при перемещении змейки контролер игры проверяет что с кем столкнулось, какие следствия от этого, и указывает каждому из  объектов как изменить состояние..

Автор: fuckingniger 20.6.2011, 13:17
в том то и дело, что нужны классы(это работа по предмету ООП))

то есть другого выхода кроме того, что я предложил нет ?

Автор: mes 20.6.2011, 13:19
Цитата(fuckingniger @  20.6.2011,  12:17 Найти цитируемый пост)
то есть другого выхода кроме того, что я предложил нет ? 

Дело не в классах, Вы выход не в том месте ищете..

Добавлено через 2 минуты и 23 секунды
Цитата(fuckingniger @  20.6.2011,  12:17 Найти цитируемый пост)
(это работа по предмету ООП))

никто не заставляет отказываться Вам от классов совсем, просто если к примеру составляете алфавит, тп далеко не всегда полезно определять для каждой буквы свой собственный класс..

Добавлено через 3 минуты и 15 секунд
ООП не есть "компот из классов"

Автор: fuckingniger 20.6.2011, 13:22
Цитата(mes @  20.6.2011,  13:12 Найти цитируемый пост)
У Вас есть поле, на нем разложены предметы, при перемещении змейки контролер игры проверяет что с кем столкнулось, какие следствия от этого, и указывает каждому из  объектов как изменить состояние..

это хорошая мысль

Автор: mekhanikus 21.6.2011, 11:03
Ещё идея:

Есть класс "Червь", если классы "Пустая ячейка", "Яблоко", "Бомба".
При этом 3 последние класса - производные от класса "Ячейка".

Перегружаем оператор "+" для операции "Червь"+"Ячейка".
С каждым шагом делаем "Червь"+"Ячейка",
результат будет зависеть от того, что прячется под "Ячейкой".

Автор: mes 21.6.2011, 20:40
Цитата(mekhanikus @  21.6.2011,  10:03 Найти цитируемый пост)
Перегружаем оператор "+" для операции "Червь"+"Ячейка".

и делаем его виртуальным, иначе смысла нет.. 
 а после код логики отвечающий за это поведение будет раскидан по всей программе..  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)