@ProCxx

Страница 1764 из 2477
Egor
17.02.2018
08:53:51
способ обсуловлен объективными причинами, а не желанием сделать так или так

Anatoly
17.02.2018
08:56:53
prefer - предпочитаем

Egor
17.02.2018
08:58:08
и всё же это не спонтанное решение

Google
Anatoly
17.02.2018
08:59:44
если заголовочные файлы не связаны с хаками - порядок включения не имеет значения и относится к вопросам стиля.

а если один заголовочный файл полагается на наличие в цепочке включение уже включенного ранее файла - это расстрел

Egor
17.02.2018
09:01:10
если хедер использует <вектор> - надо включать вектор везде в .цпп или один раз в .х ?

Anatoly
17.02.2018
09:02:31
если заголовочный файл определяет сущность требующую полное определение vector там и включаешь. на самом деле, не понял к чему ты ведешь.

Igor
17.02.2018
09:03:25
всё как раз наоборот - 1. текущий хедер, 2. хедеры проекта, 3. хедеры библиотек, 4. стд - https://llvm.org/docs/CodingStandards.html#include-style
то ли о Мейерса, то ли у Саттеры как раз про это читал. Такой порядок должен быть. На текущий хедер должно "влиять" как можно меньше включений

Эдвард
17.02.2018
09:45:53
Berkus
17.02.2018
09:57:19
если заголовочные файлы не связаны с хаками - порядок включения не имеет значения и относится к вопросам стиля.
вот это верное замечание, в основном какой-то порядок включения диктуется хаками или просто желанием какого-то однотипного стиля

Ilia
17.02.2018
11:35:53
include выносятся из src?
Можно и так и так

а почему именно такой порядок?
А почему бы и нет? Какой-то порядок должен же быть... Этот хороший, логичный.

а если один заголовочный файл полагается на наличие в цепочке включение уже включенного ранее файла - это расстрел
...В смысле автора кода убивать надо. Да, но такой код к сожалению встречается, редко, но бывает

Дед Пегас
17.02.2018
11:54:52
Инклуды лучше в спп

Google
Ilia
17.02.2018
12:33:11
Ну да редко. В профессиональном коде, не у студентов

Кстати про include... Если кто найдет документацию по Rational Rose, там в документации была очень хорошая классификация видов связей классов и заголовочных файлов. Мне не воспроизвести...

Ilia
17.02.2018
13:27:45
Это книга?

Сейчас поищу...

Berkus
17.02.2018
13:30:18
у него добрых пол-книги посвящено правильному порядку инклюдов и их взаимосвязи с классами и компонентами

Ilia
17.02.2018
13:35:04
А что-то нету её в нашей коллекции...

Andrey
17.02.2018
13:35:46
Large Scale C++?

Berkus
17.02.2018
14:26:40
А что-то нету её в нашей коллекции...
я точно ее кидал или сюда или в супапро

Ilia
17.02.2018
14:32:03
Я помню, но не нашел

Berkus
17.02.2018
14:36:04
в супапро вот было

#books

Andrey
17.02.2018
14:37:27
Анатолий же вон выше кинул уже

Anatoly
17.02.2018
14:39:06
pdf поудобочитаемей будет

Berkus
17.02.2018
14:52:29
там хренового качества пдф если я правильно помню

рекомендую бумажную версию, она довольно неплохая)

pavel
17.02.2018
17:06:58
struct Cust { int x = 0; }; int main() { Cust a = {0}; return 0; } >>>> g++ -std=c++11 Почему оно собирается только если выкинуть = 0 из структуры?

Yaroslav
17.02.2018
17:09:07
электронные книги на комп, эт вообще очень странно, особо нет нормальных приложений для чтения, был акробат (из тех что знаю) и xodo, остановился на 2

Google
Yaroslav
17.02.2018
17:09:07
pdf поудобочитаемей будет

про djvu, вообще не понял прикола

Дмитрий
17.02.2018
17:10:09
struct Cust { int x = 0; }; int main() { Cust a = {0}; return 0; } >>>> g++ -std=c++11 Почему оно собирается только если выкинуть = 0 из структуры?
Потому что ты пользуешь инициализацией всех полей руками, это работает только у POD, а ты неявно написал конструктор.

pavel
17.02.2018
17:10:35
Потому что ты пользуешь инициализацией всех полей руками, это работает только у POD, а ты неявно написал конструктор.
Я понимаю что я руками написал конструктор, но почему именно такой конструктор сделал структуру уже не POD?

Нет ничего не POD-ного, никаких там выделений памяти и прочего херобаза.

Дмитрий
17.02.2018
17:11:27
Я понимаю что я руками написал конструктор, но почему именно такой конструктор сделал структуру уже не POD?
Я бы сказал, что в общем случае это очень плохой стиль, нарушающий инкапсуляцию

pavel
17.02.2018
17:11:47
Yaroslav
17.02.2018
17:13:57
а оно по стандарту разве не должно быть равно 0?

struct Cust { int x = 0; }; int main() { Cust a = {0}; return 0; } >>>> g++ -std=c++11 Почему оно собирается только если выкинуть = 0 из структуры?

Дмитрий
17.02.2018
17:14:36
На стиль пока похрен, интересует принцип.
Не обязано) Ну ок, в конструкторе есть логика у тебя. Тогда или надо вводить понятие "конструкторы есть, но они тупые, поэтому писать инициализацию руками всё ещё можно", или сказать "раз ты пишешь хоть какой-то позаботься о том, что твоя логика соблюдается"

Xessao
17.02.2018
17:14:50
а оно по стандарту разве не должно быть равно 0?
Используйте, пожалуйста, Replay заместо Forward, читать удобнее.

pavel
17.02.2018
17:15:38
Нет, по стандарту быть 0 оно не обязано.

Непонятно почему = 0 считается таким сложным конструктором, который прямо таки отменяет POD-ность структуры.

Xessao
17.02.2018
17:16:13
так?
Ага. Если на телефоне, то можно свайп влево сообщения заместо тапа.

Yaroslav
17.02.2018
17:16:24
Непонятно почему = 0 считается таким сложным конструктором, который прямо таки отменяет POD-ность структуры.
Это очень странное решение, но несколько раз оно мне помогло, сейчас может не помочь, скорее всего не поможет, ибо это одно и тоже, попробуй int x(0);

Yaroslav
17.02.2018
17:18:14
Какое "это"?
я написал дальше в сообщении

pavel
17.02.2018
17:18:26
Google
Admin
ERROR: S client not available

Yaroslav
17.02.2018
17:25:35
нууу, почему бы и нет.)

Igor
17.02.2018
17:28:21
рекомендую бумажную версию, она довольно неплохая)
не рекомендую бумажную версию, летом выйдет второе издание

Aliaksei
17.02.2018
17:31:17
struct Cust { int x = 0; }; int main() { Cust a = {0}; return 0; } >>>> g++ -std=c++11 Почему оно собирается только если выкинуть = 0 из структуры?
Это исправили в С++14, будет собираться. В C++11 aggregate initialization для классов с default member initializers запрещена: http://en.cppreference.com/w/cpp/language/aggregate_initialization.

Yaroslav
17.02.2018
17:37:32
Старая версия стандарта включена
я все время думал, что у тебя меркель на аве.)

Ilia
17.02.2018
17:38:21
А я что у тебя Назарбаев...

Yaroslav
17.02.2018
17:39:02
.)

Xessao
17.02.2018
17:59:31
struct Cust { int x = 0; }; int main() { Cust a = {0}; return 0; } >>>> g++ -std=c++11 Почему оно собирается только если выкинуть = 0 из структуры?
Как уже подметил @levlam — это исправили в C++14 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html), но если нет возможности перейти на C++14, то создайте конструктор, который будет принимать initializer_list.

Xessao
17.02.2018
18:04:55
этот пейпер тут причем?
Притом, что там "New Rules for auto deduction from braced-init-list". Я просто для информации приложил, не более.

Xessao
17.02.2018
18:05:33
Где "там"?

Delinkvent
17.02.2018
18:05:52
note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'int' to 'const Cust' for 1st argument это clang

Xessao
17.02.2018
18:07:10
там ваще нет авто
Первая ссылка в гугле. https://stackoverflow.com/questions/4118025/brace-enclosed-initializer-list-constructor

Google
Aidar
17.02.2018
18:07:56
это агрегатная инициализация

а тут явно написано no default member initializers на cppref

до c++14

pavel
17.02.2018
18:09:30
тут
Чё "тут"? Бугага

Xessao
17.02.2018
18:20:38
это агрегатная инициализация
Которая не может завершиться удачно из-за того, что list-initialization не может вызвать обычный конструктор вместо конструктора, который принимает initializer_list, так?

Berkus
17.02.2018
18:56:15
Igor
17.02.2018
18:59:33
эт хорошо, а там обновят хотя бы на с++11?
Он ее вроде основательно переписал, так что она даже в двухтомник превратилась :) Несколько раз уже откладывали, но надеюсь к CppConу ее наконец выпустят https://www.amazon.com/Large-Scale-Architecture-Addison-Wesley-Professional-Computing/dp/0201717069/

Страница 1764 из 2477