*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@ketzalkoatl20126 жыл бұрын
вот опять та же ситуация: зачем добавлять к конструктору класса MyException, конструктор класса exception ? MyException(char*msg, int DataState) : *exception(msg)* ? Почему нельзя без конструктора базового класса?
@alexey1045 жыл бұрын
@@ketzalkoatl2012, вполне себе можно, никто не заставляет делать именно так. Просто базовый класс 'exception' уже содержит в себе метод 'what()', но можно и свой написать. Это просто один из примеров, реализации могут быть разными.
@vitalykatilov47473 жыл бұрын
Всем привет. Выражаю огромную благодарность автору проекта, за то, что не бросил этот тяжкий труд на половине пути, как это многие делают, а желание наверное возникало не раз. Работаю в Ubuntu 20.04.3 LTS, среда разработки - Sublime Text. Код из урока не работает в моей системе. У кого та же проблема, смотрите код ниже. Точно не знаю, на сколько это правильно, но это работает. Это часть кода, где есть отличия, остальное без изменений. (первая половина урока). class MyException : public runtime_error { public: MyException(const char * msg) : runtime_error(msg) { } private: }; void func(int value) { if(value < 0) { throw runtime_error("Число меньше 0."); }
@antoan3446 Жыл бұрын
У меня тоже не хотел компилироваться, но как ты думаешь, в чем была проблема? Просто потому, что нужно было поставить const в конструкторе класса: MyException(const char* message). Без константы пишет что отсутствуют экземпляры класса.
@dimakovalskij3350 Жыл бұрын
спасибо, сергей! ваши уроки актуальны даже в 2023 году! ранний опыт других яп даёт о себе знать, он очень помогает. раньше не понимал ООП вообще, и считал что для меня ООП тем более на С++ это смерть, но ваши уроки мне помогли. Большая часть курса - просмотрена, ещё немного)
@1mpalo36210 ай бұрын
и как сейчас
@dimakovalskij335010 ай бұрын
@@1mpalo362 практически досмотрел этот курс ещё пол года назад, написал несколько своих програм на qt c++. Но началась учёба и программировать времени не очень осталось т.к. нужно готовиться к экзамен. Но курс - отличный, лучший из тех, что я встречал на ютубе
@1mpalo36210 ай бұрын
@@dimakovalskij3350 спасибо за информацию
@zeliksss92973 ай бұрын
@@dimakovalskij3350 и как щас у тебя с qt дела обстоят и в общем с программированием
@vadimturok594 жыл бұрын
Начитался кучи инфы на эту тему в инете, решил закрепить вашим видео, не пожалел, очень круто, спасибо автору!))
@kaliban12 Жыл бұрын
В 2022 версии надо прописывать const char *msg, для конструктора, куда строку передаем. Иначе ругается.
@Iodusmotrit Жыл бұрын
Спасибо тебе брат, помог!
@ruslandad365 Жыл бұрын
Спасибо за наводку) не все герои носят плащи)
@tema29769 ай бұрын
ещё удобнее можно принять стрингом, а запустить в конструктор родительского класса через str.cstr()
@ngplug8 ай бұрын
Тогда придется переписывать what() @@tema2976
@НикитаМихнев-д6з7 ай бұрын
спасибо я бы много времени потратил на то как это решить если бы ты не подсказал! Спасибо еще раз
@Viktor_Kardakov Жыл бұрын
Спасибо огромное за простое объяснение такой сложной темы!
Не знаю почему, но я всё прекрасно понимаю, для меня это странно...Спасибо за уроки
@KurpatovInstagram7 жыл бұрын
спасибо!
@pluto26567 жыл бұрын
все так просто, а преподы преподносят так будто "Шатл" в космос запускают)
@denden44556 жыл бұрын
Pluto ажзвщвсщазза
@АллаЛюбименко-д7р6 жыл бұрын
Вам хоть дают)) мы статические массивы 2 семестра гоняем))
@segars9604 Жыл бұрын
Спасибо за бесценный труд!)
@mykhailomorhal21816 жыл бұрын
Спасибо
@miroslavklyukovsky6833 жыл бұрын
Спасибо!!!
@aln93916 жыл бұрын
Потратил слишком много на рецептологические изложения материала. Автор излагает суть. Хорошо бы текстовую версию материала для ускорения и расшерение круга рассматриваемых вопросов. Очень хорошо.
@vefrej67063 ай бұрын
Я СЛЫШУ "Приветствую вас меня зовут Сергей..." УЖЕ 2 МЕСЯЦА
@artlinestudio67353 жыл бұрын
Большое спасибо! Просим еще уроки по С++! Пожалуйста!
@HugoBossKosta2 жыл бұрын
спасибо за урок!
@vladalu97946 жыл бұрын
Спасибо большое за лучшие уроки!!
@Simba_the_cat5 жыл бұрын
Большое спасибо за урок!
@Tyr4noBuba2 жыл бұрын
Спасибо!
@leokruglikov64874 жыл бұрын
Это пиздец.... ты просто изменил мировозрение программирования! Спасибо тебе за все!
@SeshAlex6 жыл бұрын
Спасибо за урок!
@Salavat1k5 жыл бұрын
Без const у меня не собирается: MyException(const char *msg,int DataState) : exception(msg)
@alexey1045 жыл бұрын
Это потому, что первый параметр - строка, а строка - это тип данных 'const char *'.
@TheWladberlin5 жыл бұрын
Аналогично. Спасибо за подсказку!
@VyachesR4 жыл бұрын
@Hemid Aliyev У вас тоже Visual Studio?
@ДенисИванов-й4э7с3 жыл бұрын
@Hemid Aliyev может быть из-за версий VS или внутренних настроек
@АлексейП-х1ш3 жыл бұрын
У меня в кодблокс работает только вот с таким кодом MyException(string const &msg, int dataState):runtime_error(msg)//такая запись только для кодеблокс
@NikolayForostiy5 жыл бұрын
При передаче массива char myfex(char *msg , int y):exception(msg){ k = y;} возникла проблема с передачей сообщения throw msg из функции " отсутствуют экземпляры конструктора "myfex::myfex" соответствующие списку аргументов типы аргументов [const char [32],int] " возможно поменяли какие-то стандарты, но сейчас это работает при myfex(const char *msg , int y):exception(msg){ k = y;}
@avicennapro4 жыл бұрын
Спасибо
@C2H5OHH3 жыл бұрын
Thank you for the lesson!
@bama26193 жыл бұрын
спасибо. Понятно как всегда.
@VyachesR4 жыл бұрын
Урок просто &ex
@francisB834432 жыл бұрын
почему при вызове метода GetDataState() выводится ошибка "Объект содержит квалификаторы типа, несовместимые с элементом функции"
@madcrow11 ай бұрын
убери const перед Myexception в catch
@user_x1383 жыл бұрын
У меня объект ex не видит метод getDataState(). Хотя он находится модификаторе доступа public. А также время от времени подчеркивает базовый класс exception как несуществующий
@TGrod3 жыл бұрын
Тоже столкнулся с такой ошибкой. У меня она пропала после того, как убрал const из catch, т.е: catch(MyException &ex). Не совсем понял, с чем это связано P.S. Всё решается довольно просто (я фиг знаю почему так, но всё же. Не помню такой темы с const и методами класса). Надо после метода GetDataState() написать const, то есть вот так: int GetDataState() const {return this->dataState;} Кстати + у автора у самого нет const перед MyException &ex (я только сейчас заметил), тогда всё решается первым способам (если вы просто написали случайно const, или не убирали его после того, как переименовали exception в My...), но для себя можно и вторым способом))
@Kokurorokuko3 жыл бұрын
@@TGrod Спасибо за решение проблемы, но хотелось бы всё равно понять, почему она появляется.
@TGrod3 жыл бұрын
@@Kokurorokuko я сейчас посмотрел и был очень удивлён тому, почему так получается. Оказывается у константного объекта мы можем вызывать ТОЛЬКО константные методы, иначе другие методы даже не будут проверяться на то, есть ли в нём способ изменения константного объекта или нет. Проще говоря надо писать константный метод (слово const после параметров), потому что у нас константный объект. На эту тему есть отличный урок на Ravesli. Называется "Классы и const в C++" 123 урок
@BrownAleks4 жыл бұрын
Вот такой ещё конструктор имеется: exception(const char *const _Message, int) - Для чего там ещё один параметр int? И как его получить в catch?
@ZnZ7 жыл бұрын
Будут ли видео по Sokcet Client Server?
@angelpensive91455 жыл бұрын
В С++ вы не сможете вызвать делегирующий конструктор excepiton(const char*). Это будет работать только в VS.
@user_x1383 жыл бұрын
Подскажите, почему?
@Куся-ч9я3 жыл бұрын
@@user_x138 У exception нет конструктора для строкового значения, в VS используется расширение MSVC которое позволяет это делать. Чтобы передать строковое значение используют runtime_error или logic_error.
@gavyttop13413 жыл бұрын
@@Куся-ч9я ебанутся я после этих строк перестал понимать с++ а ведь всё было гладко)
@Куся-ч9я3 жыл бұрын
@@gavyttop1341 Проще говоря, у exception в Virtual Studio прописан тот функционал, который позволяют использовать строчки в своем проекте. А в стандарте С++ нет, поэтому нужно извращаться иначе :)
@gavyttop13412 жыл бұрын
@@Куся-ч9я да кст я смотрел урок 2016 там всё if реализовано)))
@ildaryakupov9032 жыл бұрын
Почему обычный эксепшен в myexception не попадает ?
@antonsalamov51649 ай бұрын
11:36 строчка 33 у автора, компилятор говорит что exeption не принимает строковый литерал. Возможно ли что поменялся стандарт?
@Jessica_Cat-l1v7 ай бұрын
урок понял, но в Code::Blocks строка с конструктором не работает My_Exception( char *msg, int data_State): exception(msg), если изменить класс exception на logic_error всё работает за исключением Геттера
@ИгорьК-у6ф Жыл бұрын
Спасибо за работу! Слишком много прыжков по разрозненным кускам кода, хотя весь код вполне можно уместить на одном экране, общей картины не видно, воспроизвести код не получается - не хватает текстового варианта.
@ВасилийПетров-л1й6 жыл бұрын
Повторяя за вами поулчаю ошибку class MyException : public exception {}; - error C2504: exception: не определен базовый класс
@ИванИванов-й7и5э5 жыл бұрын
А ты подключил исключения через include ?
@slimbdeful6 жыл бұрын
Подскажите, где в VS Вы нашли сочетание клавиш, чтобы комментировать не построчно, а вот так: /*что-то*/ ?
@PanVladyslav6 жыл бұрын
нажми ctrl + k , ctrl + u
@TheLjubin4 жыл бұрын
ctrl+k+c, ctrl+k+u
@ВасилийПетров-л1й6 жыл бұрын
еще в конструкторе надо писать const char * msg
@ДенисКвантум4 жыл бұрын
Минут 30 смотрел на код и не понимал в чем прикол, спасибо тебе ))))!!!!!!
@ДаниилНепелев-н4х2 жыл бұрын
@@ДенисКвантум Я тоже не сразу въехал, но потом немного посидел, и сам догнал )
@colt58702 жыл бұрын
лучший я залип пздц
@justman76562 жыл бұрын
Почему не присвоить значение полю dataState также в списке инициализации конструктора?
@ЮрийЛука-и2ъ7 жыл бұрын
прерывания будете рассматривать? мне было бы очень интерестно посмотреть как можно организовать цикличную работу программы пока я ввожу значение какой то переменной через "cin>>"
@PanVladyslav6 жыл бұрын
break; пропиши
@Kopatych693 жыл бұрын
В Яве все эти проблемы решены.
@TheLjubin4 жыл бұрын
Кто-то знает, как этот - char *msg - "вывести" в VinForms ? MessageBox::Show(ex.what()); - здесь просто - TRUE
@vitanli83537 жыл бұрын
Можно вопрос? Скажите пожалуйста, на чём лучше писать GUI приложения только под windows? Я растерялся, очень много выбора. C++ builder, Qt creator, MFC, CLR, win32. Что лучше выбрать? возможно, и не из этого списка
@SimpleCodeIT7 жыл бұрын
C# WinForms или VPF
@vitanli83537 жыл бұрын
#SimpleCode но там же вроде нужен framework, а у он не у всех установлен и производительность ниже
@SimpleCodeIT7 жыл бұрын
net framework стоит на любой винде, начиная с XP
@vitanli83537 жыл бұрын
#SimpleCode спасибо, возможно попробую C#. а что из C++ посоветуете?
@vitanli83537 жыл бұрын
SЌĬP クラス да, но для него, как и для C# требуется .net framework. а я как раз хотел чтобы программы могли работать без него
@TheWladberlin5 жыл бұрын
А как после сообщения от exception организовать вторую, третью и т.д. try -попытку?
@melmenx3 жыл бұрын
один из вариантов через цикл while(). Пока значение true выполняется цикл, bool check = true; while(check ) { try { //код check = false; // если не выбросило исключение. } catch() {} }
@ДенисИванов-й4э7с3 жыл бұрын
Вариант метки, go to
@raime-n1u2 жыл бұрын
С С++11 char* name не будет работать, надо использовать const то-есть, const char* name
@ДмитрийНормов-ю6ц2 жыл бұрын
а почему в уроке об этом ни слова??
@raime-n1u2 жыл бұрын
@@ДмитрийНормов-ю6ц многие команды,компании и т.д. не переходят на последнии версии языка, так как стандарт не прижился или ещё что-то. Вообщем причины для того?что бы остаться на предыдущей версии есть. Возможно автор сидел на до 11 версии стандарта(см. причину выше)
@ДмитрийНормов-ю6ц2 жыл бұрын
@@raime-n1u ого, 11 версия!!! Это ж принималось 11 лет назад!! Какой там говорить об 17 или 20й ...
@annaborodina4804 Жыл бұрын
спасибо :)
@princessmary5556 Жыл бұрын
@@ДмитрийНормов-ю6ц Потому что "урок" сделан неграмотным балбесом.
@СергейНазаров-т3ш2 жыл бұрын
Вопрос, а почему в параметрах стоит указатель на тип char, а передаётся строка? Поидее же string должно быть, char же за символ единичный отвечает.
@Никитас-ч6и2 жыл бұрын
Строки задаются как массивы char, а массивы - указателями на элемент [0]. Т.е. char* a = "bla-bla" эквивалентно char* a = (const - от компилятора зависит) char[7] . String - это тип из STL, так что в самом C++ строки реализованы через данную пень-колоду(хотя это и очевидное требование низкого уровня абстракции этого языка). При том, заметьте, char* = const char писать вообще-то никак нельзя, так что компилятор в целом может начать ругаться на вас из-за собственной же реализации.
@sleepyNovember_project9 ай бұрын
bruh
@oljaolsa72614 жыл бұрын
throw Myexception("один", value); треба було додати ще один параметр))))))))
@haskehaldir78702 жыл бұрын
Странно. Вроде пишу то же самое. А когда задаю аргумент в конструктор класса MyException, компилятор сообщает что не может конвертировать char в MyException. Не понимаю как это исправить. Так выглядит мой класс. class MyException : public exception { public: MyException(char* msg) { cout
Не хватает пояснения когда юзать, чтобы и не ставить где попало, и чтобы не пропускать где бы стоило эти блоки try-catch
@TheWladberlin5 жыл бұрын
Везде, где не уверен что не произойдет ошибки. Как правило, там где работа с файлами, там где диалог с пользователем и т.д.
@sagecat56966 жыл бұрын
Здравствуйте, у меня вопрос. Смотрите, вот Вы в первом своём варианте описали конструктор класса MyException как: MyExсeption(char * msg) : exception(msg){} Почему (!) оно работает вместе с строкой типа sz, я имею ввиду, почему оно работает когда вы бросаете throw MyException("TEXT") Ведь строка которой вы объявляете конструктор является именно строкой, а не ссылкой на первый элемент массива типа char. Вы же в конструкторе в итоге принимаете не ссылку на объект типа char, а физически сам объект типа string.
@АнтонК-м8о6 жыл бұрын
строка тут как константа со ссылкой на себя, а не объект стринг
@pavelpolo9016 Жыл бұрын
А если создать в своем классе MyException поле text, то нет смысла наследоваться от базового exception? Если там всего одна функция what... В своей программе получается можно обойтись самописным классом?
@hdtrydyydyd2486 Жыл бұрын
любой класс можно написать самостоятельно, но зачем делать, когда с тем же успехом можно не делать? Какой смысл от самописного класса, если есть готовый?
@pavelpolo9016 Жыл бұрын
@@hdtrydyydyd2486 смысл, что в него можно добавить любой свой функционал. А не наследовать другой класс ради одной функции what()
@sleepyNovember_project9 ай бұрын
@@pavelpolo9016 ну наверное базовый exception имеет смысл использовать только для стандартных функций и методов, которые кидают исключение в него Например если std::stoi использовать, если эта функция не сможет перевести строку в целочисленный тип данных, она бросает исключение, наверн как раз в класс std::exception Так что тут, либо ты используешь сам std::exception, либо наследуешь от него свой класс исключений, чтобы не пропустить исключение от того же stoi
@edges_of_relief3 жыл бұрын
Здравствуйте, стараюсь понимать ваши уроки, но не очень понимаю функцию записи в 8:05 на 15 строчке, а именно приписку ::exception(msg), что данная запись делает? Подскажите пжлст:)
@gavyttop13413 жыл бұрын
это наследование) чекай урок по нему)
@sleepyNovember_project9 ай бұрын
Это потомок свалил ответственность на предка !
@candarlyАй бұрын
видос был снят 6 лет назад..
@sleepyNovember_project9 ай бұрын
Если не поймал, то - аборт :D
@VKohai_vk4 жыл бұрын
Не работает
@Viamsupervadetvadens7 жыл бұрын
up
@_mirai5 жыл бұрын
кто ставит дизлайки?
@ДмитрийБайков-щ9б Жыл бұрын
Скопировал код , но выдаётся ошибка что нет экземпляра конструктора MyException...
@segars9604 Жыл бұрын
Там константы не хватает, раньше он это за предупреждение выдавал, а теперь за ошибку. Тоесть вот пропиши такой конструктор - MyException(const char *msg, int dataState):exception(msg)
@sagecat56966 жыл бұрын
Разве, я что-то не так написал? #include "stdafx.h" #include using namespace std; class MyException : public exception { public: MyException(char * msg) : exception(msg) { } }; void Foo(int n) { if (n == 5) throw MyException("Текст"); //Ошибка!!! Текст не является элементом типа char* и не может быть cout
@LenTos13376 жыл бұрын
только теперь с геттером какие-то проблемы
@Salavat1k5 жыл бұрын
напишите лучше так: MyException(const char * msg) : exception(msg)
@ЕвгенийМисюра-х2ы4 жыл бұрын
@@Salavat1k Благодарочка за подсказку!!!
@oljaolsa72614 жыл бұрын
throw Myexception("число дорівнює 1"); ошибка Severity Code Description Project File Line Suppression State Error (active) E0289 no instance of constructor "Myexception::Myexception" matches the argument list Project44 C:\Users\Оксана\source epos\Project44\Project44\Source.cpp 30
@Mr2RG3 жыл бұрын
Важное дополнение: класс exception может быть реализован по усмотрению разрабов std библиотеки. В виду чего параметры конструктора могут различаться количеством аргументов.
@gavyttop13413 жыл бұрын
а что делать если я пишу exception но у меня он невидится?
@princessmary5556 Жыл бұрын
Бред.
@nikitasuyazov20604 ай бұрын
Что-то мне эта тема далась очень сложно. Скучная, не интересная, не понятная. И не до конца понятно применение этих исключений.
@warbine58195 жыл бұрын
14:14 Тут стоит сказать немного иначе. Ищется не "самый подходящий" (самый подходящий как раз MyException), а первый подходящий catch. Таким образом вы неправильно ответили на свой вопрос =)
@TheWladberlin5 жыл бұрын
Акцент был на том, что они оба "самые подходящие" в равной степени, но срабатывает тот, кто первый