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

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

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

23 ответов

8 просмотров

Левый 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
О чем и речь. У вас указатель на внутреннее поле, ...

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

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

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

здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
1
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Карта сайта