|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
Stack со сменой представления09.09.2013, 13:44. Показов 3091. Ответов 51
Метки нет (Все метки)
Здорова господа!!!
Есть задачка: "Напишите класс Stack, для которого можно сменить представление на стадии выполнения программы. Подсказка: "Любую проблему можно решить введя еще один уровень косвенности" " Тут не понятно что нам нужно сделать. Рассмотрим просто теоретически, допустим есть у нас класс Stack и нам что нужно от него по создавать производные классы допустим А и допустим B. Создаем указатель на Stack *p И создаем указатель на A *pa и указателю p присваиваем указатель pa и у нас получится что мы изменили представление класса Stack, что бы еще поменять то мы создаем указатель B* pb со своим набором дополнительных функций снова присваиваем p = pb уже новое представление, это имелось введу. Хотя на стадии выполнения имелось в веду dynamic_cast<>() понятно что перед выполнением мы приведем Stack к нужному типу. Что понимается под сменой представления на стадии выполнения? Я понимаю полиморфизм имелся введу или что? А эта строчка что означает: "Любую проблему можно решить введя еще один уровень косвенности" Что такое уровень косвенности, косвенности это как бы через промежуток обращение не на прямую, видимо нужно производные классы создавать. Объясните новичку!!!!
0
|
|
| 09.09.2013, 13:44 | |
|
Ответы с готовыми решениями:
51
[bcc32 Error] File1.cpp(19): E2316 'Stack<T>::Stack()' is not a member of 'Stack<T>' Есть ли связь между STL-stack и stack - высокопроизводительная память? error C2440: 'return' : cannot convert from 'stack<X>' to 'stack<X> *' |
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 13:54 | |
|
объяснение простое - я тоже ничего не понял, составитель задания был большой оригинал или хочет вырастить из вас моцарта
Добавлено через 44 секунды ...с тем же успехом он мог бы написать короче: любую проблему можно решить)
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 09.09.2013, 14:02 [ТС] | ||
|
Добавлено через 3 минуты Давайте господа ваши варианты по решению или я так сделаю как описал, просто наследование от Stack сделаю и поменяю "представление" класса Stack, а потом на стадии выполнения буду приводить к нужному типу. Если так не правильно то как правильно делать????
0
|
||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 14:06 | |
|
мой вариант - спросить у преподавателя чего ему нужно. я конечно понимаю - программирование и анализ предложения русского языка вещи чем-то перекликающиеся, но вроде как вместо решения задания приходится гадать шарады... второй вариант - может "волшебные" слова есть в конспектах и их хочет услышать препод
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 09.09.2013, 14:08 [ТС] | |
|
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 14:11 | |
|
вот, например, познакомьтесь с выдержкой из книги Бьерн Страуструп. Язык программирования С++
"Унарная операция * называется косвенностью (или операцией разыменования), она выбирает значение объекта, на который настроен указатель." - я в шоке. кто бы мог подумать о таком применении великого русского языка. оказывается волей перевода (а может это как раз был очень умный переводчик и беда в том что все остальные переводчики были глупы) операция разыменования была названа косвенностью. хотя в этом тексте она как то слабо нахлобучиваеся на вашу песню
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 09.09.2013, 14:12 [ТС] | |
|
vxg, Так почему гадать в задании ж подсказка есть: "Любую проблему можно решить введя еще один уровень косвенности". Читай внимательно!!!
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 14:13 | |
|
..оо.. я попал пальцем в небо. значит надо исследовать данный труд на заскоки в терминах
Добавлено через 43 секунды ну и о какой косвенности в данном случае тогда речь? еще один уровень это еще одна звездочка? как то не так
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 09.09.2013, 14:14 [ТС] | ||
|
0
|
||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||
| 09.09.2013, 14:16 | ||
|
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 09.09.2013, 14:17 [ТС] | |
|
Не придираемся к словам, смысл же понятно, что такое оператор *. Пофигу как что переведено смысл от этого не исказится.
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 14:21 | |
|
кстати, в том переводе что я нашел в сети задача о которой речь звучит вообще интересно
13.(*3) Составьте такое описание класса stack, для которого можно в динамике менять реализацию. Подсказка: "Всякую задачу можно решить, введя еще одну косвенность". сравните с Напишите класс Stack, для которого можно сменить представление (в том переводе это реализация) на стадии выполнения программы (в том переводе это в динамике). Подсказка: "Любую проблему можно решить введя еще один уровень косвенности таким образом видим что ваш перевод вообще нельзя сделать ибо во время выполнения вы представление (тоже хз что это означает - предположим что имеется ввиду реализация) не измените. короче хх
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 09.09.2013, 14:22 [ТС] | ||
|
Плюс на стадии выполнения можно сам Stack поменять либо чисто оставить такой какой есть, либо изменить представление на представление производных классов используя dynamic_cast<>(). Я сам в этом не сильно шарю, но смотрю ты тоже слабувато .
0
|
||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.09.2013, 14:22 | |
|
давайте попробуем перевести по-хорошему и решим. я не против
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 09.09.2013, 14:23 [ТС] | |
|
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||
| 09.09.2013, 14:23 | ||
|
сейчас найдем оригинальный перевод и все заработает. нелишним было бы выбросить сюда и сам класс собственно
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||
| 09.09.2013, 14:35 [ТС] | |||||||
Кто думаешь что по другому ее решать? Добавлено через 5 минут vxg, Мы можем сказать на неясность условия и сделать так как понимает, если кто спросит, скажем что в условии так было, я думаю гадать не нужно просто примерно сделать да и все.
0
|
|||||||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||
| 09.09.2013, 14:37 | ||
|
Напишите класс Stack, для которого можно сменить представление на стадии выполнения программы. Подсказка: "Любую проблему можно решить введя еще один уровень косвенности" следующим образом: возьмите класс Stack и перепишите его таким образом что бы его методы стали виртуальными. тупо? да. однако 256 раз прогнав через кости это задание не приходит ничего красивее. они хотят сменить представление. под представлением я так понимаю они имеют ввиду сущность объекта. причем именно объекта Stack а не тех объектов которые он хранит. они хотят модифицировать его. хотят что бы наш абстрактный Stack вел себя по разному в зависимости от того как его расширили внутри программы.
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 09.09.2013, 14:50 [ТС] | ||
|
А для реального класса Stack который мы не можем переписать не абстрактного, мы можем сделать наследование к классу у которого будет абстрактный член (полиморфный тип) и от него еще поделать наследники, двойной как бы уровень косвенности, да наверно так. Там пишется что к любой иерархии классов можно лекгко встроить любой другой класс или иерархию, там просто двойное наследование применяют и наследник имеет свойства двух иерархий. О еще вариант если Stack не полиморфный класс и мы его изменить не можем, то мы создаем класс свой Abstrakt_Stack полиморфный, от него делаем производный класс A : public Abstrakt_Stack, public Stack и B : public Abstrakt_Stack, public Stack эти классы будут размым представлением класса Stack и уже через указатель не Stack, а Abstrakt_Stack мы можем в реальном времени менять представление Stack. Этот прием видимо применяется для реальных библиотек которые нельзя изменить, но нужно расширить. Добавлено через 2 минуты vxg, Можно создать уровень косвенности для любого класса в иерархии классов и решить любую проблему .
0
|
||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
||||
| 09.09.2013, 14:54 | ||||
|
0
|
||||
| 09.09.2013, 14:54 | |
|
Помогаю со студенческими работами здесь
20
Как получить нужные данные из представления , а именно строки представления Ошибка: "Unhandled exception: Stack cookie instrumentation code detected a stack-based buffer overrun" Как проинициализировать std::stack<const int> obj ( std::stack<int>{} );
Работа со сменой картинки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|