124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
|
||||||
#1 | ||||||
Инкапсулировать без серьезного изменения..возможно ли? - C++07.02.2011, 22:15. Просмотров 4733. Ответов 90
Метки нет Все метки)
(
собственно это кольцевая очередь, на которой у меня построено уже 4 след лабы.Пошел сегодня сдавать - препод ткнул рукой в не инкапсулированный public: list_block* next; из class list_block в самом начале. И говорит, пока не перепишешь все так, чтоб он был в привате - не приму. А там куча операций присваивания и считывания через (->) из class circle_list и его сына quene. Причем фрэнды использовать запретила. НА все мои возражения только кивает *овца(( Во общем, как малой кровью вбахать эту глупость в приват и иметь к ней нормальный доступ отовсюду? что не переписывать еще 5 таких лаб в хз скольких меcтах ?..
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
07.02.2011, 22:15 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Инкапсулировать без серьезного изменения..возможно ли? (C++):
90
Если введенный список упорядочен по возрастанию, то оставить его без изменения - C++
Можно ли добавлять данные в файл, без изменения прежних данных в этом файле? - C++ |
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
||||||
08.02.2011, 01:47 | #16 | |||||
124bit, нет, я имею в виду сделать так:
0
|
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
|
||||||
08.02.2011, 02:00 [ТС] | #17 | |||||
не помогает. Доступ у функций почему-то не появляется
или ты имел ввиду что если просто list_block туда сунуть инкапсуляция нарушаться не будет, но list_block* next; в приват не заносить?
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
|
08.02.2011, 02:31 | #18 |
ForEveR, ну, если ссылаешься на СБШ, то залезь внутрь того же вектора и посмотри, как там оно устроено.
124bit, да list_block* next закрытым не делать. Добавлено через 2 минуты ForEveR, а лучше не вектор смотреть, а сразу список. Там всё открыто.
0
|
easybudda
Модератор
![]() ![]() 9958 / 5881 / 993
Регистрация: 25.07.2009
Сообщений: 11,119
|
|
08.02.2011, 03:01 | #19 |
Те же грабли...
Можно, конечно, попробовать измором взять, но шансов мало... ![]()
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
||||||
08.02.2011, 03:17 | #20 | |||||
easybudda, вот простой пример.
0
|
Mr.X
![]() 3056 / 1701 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
08.02.2011, 03:47 | #21 |
В C++ существует такое понятие как POD-класс, что по сути означает Си-совместимую структуру, которая аналогична понятию записи в других языках. В таких структурах все данные сишных типов, и они открыты.
POD-объект может быть инициализирован с помощью агрегатного инициализатора (в фигурных скобках). Локальный POD-объект без инициализатора имеет неопределенное значение. При инициализации пустым инициализатором данные получают значение 0 или false. В инструкции goto можно обходить объявления POD-объектов.
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
|
08.02.2011, 12:26 | #22 |
Mr.X, за информацию спасибо, но к теме это не относится. Мы тут рассматриваем всё же не POD, а сиплюсплюсные классы.
0
|
Mr.X
![]() 3056 / 1701 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
08.02.2011, 12:48 | #23 |
Я это к разговору об открытых данных классов. Согласно концепциям C++ они допустимы только в POD-классах, в других же - это дурной тон.
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
|
08.02.2011, 13:31 | #24 |
Обоснуй. И прокомментируй это утверждение на примере класса std::pair или на примере исходников класса std::list.
0
|
Mr.X
![]() 3056 / 1701 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
08.02.2011, 14:18 | #25 |
А чего тут обосновывать? Инкапсуляция – это один из основополагающих принципов ООП.
Что касается шаблона класса std::pair, то это классический пример аналога паскалевской записи. Класс же std::list слишком сложен, чтобы его здесь обсуждать, да и обобщенное программирование – это совсем отдельная песня.
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
||||||
08.02.2011, 21:16 | #26 | |||||
Утверждение обосновывать.
Либо признать, что ляпнул не подумав. Тем более, что я уже привёл контрпример, его опровергающий. Вот определение основы узла списка из исходников СБШ:
0
|
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
|
|
08.02.2011, 23:11 [ТС] | #27 |
VOLOVZI
так если я инкапсулирую подклас это ничего не изменит.. те же грабли, только она мне заявит, что подкласс некорректен есть какие-нибудь другие легальные методы влезть в приват?
0
|
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
|
|
09.02.2011, 00:45 | #29 |
124bit, не понял, что не изменит? Какие грабли? Я тут, блин, на три страницы распинаюсь в попытке объяснить суть.
И разберись уже с термином «инкапсуляция». Модификатор доступа private и инкапсуляция — это совершенно разные вещи.
0
|
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
|
|
09.02.2011, 08:35 [ТС] | #30 |
Predator_2004
Так черт... это ж не весь код. У меня еще 5 лаб на этой основе. Мне кода огогого придется менять, если я ввиду функции записи и считывания. Задача как раз чтоб решить вопрос малой кровью-малыми изменениями VOLOVZI я тебя понимаю, и с абсолютно с тобой согласен. Но учитывая специфику ситуации(препода!) задача стоит не *сделать норм программу*, а *переделать программу выше так, чтоб тот указатель стоял в привате*. При ввведении подкласса, у меня сам класс выходит корректен, с точки зрения препода, а подкласс некорректен. Вот. Причем вариант *что-то объяснить* не канает
0
|
09.02.2011, 08:35 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
09.02.2011, 08:35 |
Привет! Вот еще темы с ответами:
30
Отрицательные элементы отмеченных строк матрицы заменить на -1, положительные на 1, а 0 оставит без изменения - C++ Сортировка (все отрицательные компоненты заменить их квадратами, оставив другие без изменения...) - C++ возможно ли прочитать текстовый файл сначала еще раз без закрытия? - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |