Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Чт Авг 10 2006 15:18 Заголовок сообщения: Агрегирование, private и область видимости = косяк! (С++) |
|
|
Есть класс monom, и класс polynom, поля которого содержат элементы типа monom (вообще такая фигня называется «агрегирование», вроде).
Надо, чтобы одна из функций-членов класса polynom имела доступ к полям объектов типа monom, а поля вообще-то private. Трудность в том, что класс monom вы описываете СНАЧАЛА, а затем polynom, и сделать эту функцию другом класса monom НЕЛЬЗЯ (она будет вне области видимости).
Вопрос: а как? |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Чт Авг 10 2006 17:25 Заголовок сообщения: |
|
|
Да, спасибо (не знал, что так можно). |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Пт Авг 11 2006 06:08 Заголовок сообщения: |
|
|
Доступ к полям чужого класса нарушает принци инкапсуляции ООП. У класса monom нужно создать соответствующий интерфейс и никаких проблем не будет. Иначе малейшее изменение класса monom по цепочке будет сказываться на классе polynom, а куда это дальше заведет? Рассмотрите возможность переноса функции или ее части из класса polynom в класс monom.
Будет код - будет понятнее что делать _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пт Авг 11 2006 11:58 Заголовок сообщения: |
|
|
Kefir писал(а): | Доступ к полям чужого класса нарушает принци инкапсуляции ООП........... |
+1
(круглый) _________________ (круглый) |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Сб Авг 12 2006 09:08 Заголовок сообщения: |
|
|
Цитата: | Доступ к полям чужого класса нарушает принци инкапсуляции ООП. У класса monom нужно создать соответствующий интерфейс и никаких проблем не будет. |
Ага, только как раз создать такой интерфейс там - это проблема (по крайней мере на скорости сильно скажется). |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Пн Авг 14 2006 07:36 Заголовок сообщения: |
|
|
Преждевременная оптимизация - причина всех бед. (c) Кнут
С чего Вы взяли что это хоть как то скажется на скорости?
Вы думаете у Вас такой тупой компилятор, что не догадается сделать функцию inline? Так вы можете ему это указать специально.
А утверждения скажется типа "...скажется на скорости..." голословны, пока не произведены замеры.
Я уверен, что на скорости не скажется никоим образом, а вот на качестве кода скажется значительно, причем далеко не в лучшую сторону. _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пн Авг 14 2006 13:41 Заголовок сообщения: Re: Агрегирование, private и область видимости = косяк! (С++) |
|
|
Yello писал(а): | Есть класс monom, и класс polynom, поля которого содержат элементы типа monom (вообще такая фигня называется «агрегирование», вроде).
Надо, чтобы одна из функций-членов класса polynom имела доступ к полям объектов типа monom, а поля вообще-то private. Трудность в том, что класс monom вы описываете СНАЧАЛА, а затем polynom, и сделать эту функцию другом класса monom НЕЛЬЗЯ (она будет вне области видимости).
Вопрос: а как? |
вообще то речь зашла не тудысь...
была агрегация..стало наследование... Вы лучше пример приведите на языке и будет усем - предметный разговор...
(круглый) _________________ (круглый) |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Пн Авг 14 2006 14:00 Заголовок сообщения: |
|
|
Неа, здесь именно агрегаци... Полином агрегирует мономы (во блин слово какое получилось). Короче, по русски, многочлен агрегирует одночлены. Во! _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
|