Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.06.2023
Сообщений: 1

FinaleBreakTheCode

20.06.2023, 20:42. Показов 3471. Ответов 26
Метки c++ (Все метки)

В систему загружен следующий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class EasyClass { 
private: 
std::string answer = "you don't know how to break it"; 
public: 
std::string GetAnswer() const { 
return answer; 
} 
}; 
 
/* 
Сюда будет вставлен весь ваш код 
*/ 
 
int main() { 
EasyClass res = SolverFunction(); 
assert(res.GetAnswer() == "but i know how to deal with it"); 
}
Предполагается, что вы реализуете функцию SolverFunction.
В систему отправляйте код функции SolverFunction, а также любой другой код, который поможет
решить задачу.

Помогите, пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2023, 20:42
Ответы с готовыми решениями:

FinaleBreakTheCode
В систему загружен следующий код class EasyClass { private: std::string answer = "you don't know how to break it"; public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
22.06.2023, 17:15
TheCalligrapher, благодарю, я не заметил сразу сорри.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13206 / 6841 / 1822
Регистрация: 18.10.2014
Сообщений: 17,302
22.06.2023, 18:02
Цитата Сообщение от sdf45 Посмотреть сообщение
C++
1
2
3
4
5
std::string EasyClass::*ptr;//правая часть-что это?
...
template struct Exploit<&EasyClass::answer>; //что такое &EasyClass::answer ? 
...
res.*ptr = "but i know how to deal with it";//res. обращается... к чему?
... если же ваши вопросы касаются именно этого, то это базовое свойство языка, непосредственно к теме не относящееся. Это указатель типа "указатель на член класса". В любой книге по С++ вам объяснят, что это такое.
1
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
22.06.2023, 18:05
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
указатель типа "указатель на член класса"
к своему стыду, не знал
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
22.06.2023, 20:38
Цитата Сообщение от leproza Посмотреть сообщение
Вот реально - не актуален. Есть доступ к исходникам - меняй права доступа. Нет - значит, не надо туда лезть.
аналогично можно сказать и про константность, но смотрите-ка mutable постоянно используют и const_cast тоже! Очень полезные слова для обхода константности!
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
22.06.2023, 22:01
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
господа вместо того чтобы критиковать только критиковать, лучше бы показали своё решение.
Чего-то не очень ясна эта претензия. TheCalligrapher постом выше как раз и привел <своё> решение.
0
99 / 74 / 28
Регистрация: 30.03.2023
Сообщений: 206
22.06.2023, 22:13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
аналогично можно сказать и про константность, но смотрите-ка mutable постоянно используют и const_cast тоже! Очень полезные слова для обхода константности!
Ну, пример с mutable я считаю неподходящим - его все же автор "константности" должен указать. const_cast - да, с этим примером согласен.

Но, чисто теоретически, зачем-то же автор условного кода поместил поле в private или добавил модификатор const. Что-то же он этим хотел сказать, раз нашел время лишние символы печатать.

На моей практике что доступ к приват полям, что отмена константности часто свидетельствуют о проблемах в архитектуре приложения ( уточню - это не отменяет варианта "автор дурак, и сделал неправильно" ). Поэтому да, порою приходится прибегать к таким вещам, ибо менять архитектуру куда более трудозатратно, нежели применить какой-нибудь хак (не знаю, почему const_cast хаком назвал - подберите другой термин)

А отсюда я и прихожу к тому что,
а) Есть исходники - лучше уж архитектуру в порядок привести
б) Нет исходников - тогда лучше не лезть в эти вещи. Кто его знает, что произойдет, если ты вдруг поменяешь поле, которое автор считает константным? Где это может аукнуться?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
22.06.2023, 22:59
Цитата Сообщение от leproza Посмотреть сообщение
const_cast - да, с этим примером согласен.
А вот не надо с ним соглашаться. const_cast снимает только квалификационную, временную, константность; настоящую константность он снять не может, а использование его в этой роли просто приводит к неопределенному поведению. То, что компилятор без встроенного статического анализатора не бьет по рукам за это - это просто особенность минималистичного подхода С++ (стараемся не платить за то, что не используем), т.к. для диагностики всех таких случаев со 100% вероятностью потребует хранения метаинформации уровня исполнения о том, что является константой в самом деле, а что нет.

leproza, вот пример правильного использования const_cast
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// API C библиотеки
 
typedef void callback_t(int data, void* userp);
 
extern "C" void foo(callback_t* cb, void* userp) {
    //.........
    cb(42, userp);
}
 
// API С закончилось
 
 
// С++ код
#include <iostream>
 
class WorkData {
public:
    int processData(int v) const {
        return 10 + v;
    }
 
//.........
};
 
void work_cb(int data, void* userp) {
    auto wd = static_cast<WorkData const*>(const_cast<void const*>(userp)); // вернули константность на место
 
    std::cout << wd->processData(data) << '\n';
}
 
int main() {
 
    const WorkData data; // настоящая константа
 
    // У нас есть API C, где только один вариант передачи user pointer - неконстантный void*
    foo(&work_cb, const_cast<WorkData*>(&data));
    // const_cast нам поможет справиться с этим, при условии, что дальнейшие действия 
    // не приведут к модификации константы (см. work_cb)
}

(все варианты его использования так или иначе будут эксплуатировать один и тот же принцип: мы не меняем константу через указатель или ссылку полученную через const_cast, либо объект, указатель на который был const-qualified перед применением const_cast, на самом деле не является константой:
C++
1
2
3
4
int a = 42;
int const* p = &a;
 
*const_cast<int*>(p) = 10; // Ok
).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru