
Alex Фэils?︙
15.03.2017
22:39:56

Alexander
15.03.2017
22:40:54

Маришка
15.03.2017
22:41:09
Ага, еще и с первого курса хд

Google

Alexander
15.03.2017
22:41:16
отлично
Мне же надо забрать мою книгу ?
отлично
Ты же видел, да? )))https://twitter.com/stdcppru/status/841297025396273155
Приезжаем все в Москву бафаться от книжки с автографом Страуструпа)

Ned Ogl
16.03.2017
05:07:33
Ну, еще 26 человек и очередной юбилей...

Дед Пегас
16.03.2017
05:19:49
Хотя бы двоих

Evgeniy
16.03.2017
06:01:40
Настоящий программист если получает ответ 1000, округляет до 1024

Wyldstyle
16.03.2017
06:03:24

Grigor
16.03.2017
06:11:10

Дед Пегас
16.03.2017
06:21:19

Grigor
16.03.2017
06:24:40

Дед Пегас
16.03.2017
06:28:53

Grigor
16.03.2017
06:29:02
ну вот и я о том же)

Google

Дед Пегас
16.03.2017
08:31:02
https://github.com/ericniebler/range-v3/releases/tag/0.2.0

Kathu
16.03.2017
08:33:04

Vyacheslav
16.03.2017
09:36:00
Здравствуйте!
Кто может подсказать, как инициализировать (открыть файл) ifstream в конструкторе классе, чтобы в методах можно было пользоваться этим открытым файлом. Я так понимаю, файл закрывается при выходе из блока (в данном случае конструктора)..
Другими словами, как сделать, чтобы файл не закрывался при выходе из конструктора

Aleksei
16.03.2017
09:38:13
сделй его членом класса

Tema
16.03.2017
09:39:04
но мембером сделай

TheRainwildsKeeper
16.03.2017
09:42:11

Vyacheslav
16.03.2017
09:42:12
я сделал
class Reader {
public:
Reader(const string &fn) : filename(fn) {
ifstream infile(filename);
if (! infile.is_open())
throw runtime_error("can't open input file \"" + filename + "\"");
}
mymethod {}
private:
ifstream infile;
};

Tema
16.03.2017
09:42:41
а это гейство
тут тебе не джава

Aleksei
16.03.2017
09:42:58

Tema
16.03.2017
09:43:28
сделай отдельный метод "initFileConnection"

Aleksei
16.03.2017
09:43:48
И зачем второй раз в конструкторе объявляешь?

Tema
16.03.2017
09:43:52
он будет делать m_infile. open(filename)
m_infile перенеси внутырь класса

Vyacheslav
16.03.2017
09:47:27

Tema
16.03.2017
09:49:19
но вообще кидать в сипипи эксепшоны это зашквар , я щитаю

Google

Tema
16.03.2017
09:49:45
просто в конструкторах ненадо делать опасный код
делай их в init

Vyacheslav
16.03.2017
09:50:56

babysitter
16.03.2017
10:40:26

Tema
16.03.2017
10:42:59
правда я новичок ещё

babysitter
16.03.2017
10:43:44

zk
16.03.2017
10:47:34
понял, спасибо
не слушай дебилов, лучше спроси у них почему они считают что исключения зло вообще и\или в конструторах.
Зачем создавать объект, на половину инициализированный.
Зачем нам метод initFileConnection, когда есть конструктор.
Гради Буч считает что здесь имеет место быть племенная мифология

Aleksei
16.03.2017
10:47:50
кто сказал, где написано
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rf-noexcept
Note
Destructors, swap functions, move operations, and default constructors should never throw.
Только про дефолтные сказано

Tema
16.03.2017
10:48:57
тока потом тот кто будет юзать втой код прокленёт тебя
за такой кал

zk
16.03.2017
10:49:12

babysitter
16.03.2017
10:49:15
я это знаю, практика совершенно нормальная. init нужен если у вас в проекте принципиально нельзя юзать исключения.
https://isocpp.org/wiki/faq/exceptions#ctors-can-throw

Tema
16.03.2017
10:49:16
ловить всё это дерьмо
=)

Vitaly
16.03.2017
10:50:39

Tema
16.03.2017
10:51:33

Дед Пегас
16.03.2017
10:51:34
А когда конструктор будет возвращать expected?

Google

Vyacheslav
16.03.2017
10:52:01
Вообще да, глянул на стековерфлоу, там говорят, что норм использовать эксепшены в конструкторах

Tema
16.03.2017
10:52:06

Vyacheslav
16.03.2017
10:52:07
http://stackoverflow.com/questions/810839/throwing-exceptions-from-constructors

Admin
ERROR: S client not available

Vitaly
16.03.2017
10:52:25
ну не
Судя по твоим высказыванием здесь, да.

Tema
16.03.2017
10:52:27

Дед Пегас
16.03.2017
10:52:28
ЕМНИП.
Лень лезть в стандарт(

Tema
16.03.2017
10:52:43

Vyacheslav
16.03.2017
10:55:04
Вообще логично - если в класс/конструктор передаем имя файла на открытие, а он не открылся - выходим с эксепшеном

zk
16.03.2017
10:55:31
Кеп

babysitter
16.03.2017
10:57:03

Aleksei
16.03.2017
10:57:25
Проблема с эксепшенами в том, что если в конструкторе была выделена память или заняты какие-то другие ресурсы, то надо перед выбросом все это почистить не забыть, т.к. деструктор вызван не будет

Anatoly
16.03.2017
10:58:58
Просто убиваешь процесс и ОС все сделает за тебя. Норм! ?

Aleksei
16.03.2017
11:00:19
Ага, круто когда программа крашится, если не смогла файл открыть :) Даже не сказав ничего

Evgeniy
16.03.2017
11:00:55

Anatoly
16.03.2017
11:01:35

babysitter
16.03.2017
11:01:35

Anatoly
16.03.2017
11:02:11
нет эксепшенов, нет проблем.

Google

Aldar
16.03.2017
11:03:40

Aleksei
16.03.2017
11:06:37
@snelius30 поднимай табличку :sarcasm: выше, а то не видно

Denis
16.03.2017
11:08:14
Товарищи, можно ли сделать так, чтобы по Ctrl+C кидалось исключение? Пробовал поставить свой обработчик на SIGINT и кидать из него, но это работает через раз, и вообще в интернете пишут, что так делать не надо.

Anatoly
16.03.2017
11:09:50
это тебе надо перехватывать ^c в терминале

Denis
16.03.2017
11:10:11
И как это сделать?

Anatoly
16.03.2017
11:10:12
ох, не просто это
ну почему именно ctrl-c ? может договоримся на скажем alt-v ?

babysitter
16.03.2017
11:13:16

Vyacheslav
16.03.2017
11:14:16
http://stackoverflow.com/questions/1641182/how-can-i-catch-a-ctrl-c-event-c

Denis
16.03.2017
11:14:21
У меня есть что-то вроде шелла: я набираю команды, он что-то считает и выдает результат. Иногда вычисление может быть долгим. Хотелось бы, чтобы по ctrl+c оно прерывалось, и шелл просил следующую команду, как в питоне.

Square
16.03.2017
11:14:36

Denis
16.03.2017
11:14:50

babysitter
16.03.2017
11:15:29
тут нужно костылить через long jump