170 похожих чатов

А норм вот так делать чтоб защитить данные? const

std::shared_ptr<const T> Class::get_field() const
{
return const_pointer_cast<const T>(number_);
}

23 ответов

23 просмотра

Левый const точно не имеет никакого смысла auto ptr = obj.get_field(); // ptr is a mutable copy Что касается остальной части вопроса – не подскажу, но у меня он вызывает некоторую долю скептицизма – я бы предпочёл не возвращать поля через shared_ptr. Я бы в принципе усомнился в кодовой базе, где shared_ptr используется столь... буднично

'Егор-'Зорин Автор вопроса
Ofee Oficsu
Левый const точно не имеет никакого смысла auto p...

Ну мне нужен просто пойнтер на интерфейс, и его функционал для другого класса, так что норм я думаю

'Егор-'Зорин Автор вопроса
Ofee Oficsu
Левый const точно не имеет никакого смысла auto p...

А левый конст я так понял неявно к типу даётся при возврате?

'Егор 'Зорин
А левый конст я так понял неявно к типу даётся при...

Нет. Левый конст очень легко испаряется, вот на вашем примере: const std::shared_ptr<const T> x; std::shared_ptr<const T> y = x; Всё, y неконстантный. И какой тогда смысл в константном x? x эквивалентен тому, что возвращается из вашего метода, а y тому, куда оно присваивается. Вы не можете запретить делать неконстантную копию вашего константного указателя

Это возврат внутри класса или наружу отдаёте?

'Егор 'Зорин
Наружу

Наружу это ненормально, так как получатель должен знать кишки класса, откуда поле получил, а это нарушение инкапсуляции и прочего

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Наружу это ненормально, так как получатель должен ...

Какие кишки? Зачем ему знать откуда данные получил? Если он знает откуда данные получает, он увеличивает связанность, не понял короче что вы хотите сказать

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Наружу это ненормально, так как получатель должен ...

Какую инкапсуляцию? Я ему константные данные возвращаю

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Наружу это ненормально, так как получатель должен ...

std:: vector<std::string> a { "#", "+"}; std::list<std::string> b{"&"}; b.push_back(a.at(0)); нарушается инкапсуляция?

'Егор 'Зорин
Какие кишки? Зачем ему знать откуда данные получил...

Не связность, а зацепление. И не откуда, а что он получил.

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Не связность, а зацепление. И не откуда, а что он ...

Всмысле что получил? Это статический язык

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Не связность, а зацепление. И не откуда, а что он ...

Да откуда эти термины? Кишки, зацепление?

'Егор 'Зорин
Да откуда эти термины? Кишки, зацепление?

Связность против зацепления, тут гугл в помощь. Кишки просто короче чем детали внутренней реализации.

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Связность против зацепления, тут гугл в помощь. Ки...

Вы хотите сказать агрегация а не зацепило?

'Егор 'Зорин
Вы хотите сказать агрегация а не зацепило?

https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%86%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)?wprov=sfti1

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
Связность против зацепления, тут гугл в помощь. Ки...

Если класс знает детали внутренней реализации других классов это как раз и нарушается инкапсуляция

'Егор 'Зорин
Если класс знает детали внутренней реализации друг...

О чем и речь. У вас указатель на внутреннее поле, вроде как.

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%86%D...

В Википедии которую вы мне скинули сразу синонимом дают Зацепление[1], сцепление, связанность, сопряжение[2. Я вас ваще не понимаю, против себя чтоле?

'Егор-'Зорин Автор вопроса
Oleksij Kyslytsja
О чем и речь. У вас указатель на внутреннее поле, ...

С чего вы взяли? Там нигде это не написано, у меня лично он представлен в контейнере

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта