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

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

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

23 ответов

19 просмотров

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта