Войти
ФлеймФорумПрограммирование

А почему бы не попробовать Сишечку? (34 стр)

Страницы: 133 34 35 3638 Следующая »
#495
0:26, 14 мая 2021

Kartonagnick
> ты вопрос понял?
Понял. А ты ответ понял?

> что бы не заморачиваться
На то библиотечные классы и существуют.


#496
0:37, 14 мая 2021

=A=L=X=
> Нет такого паттерна "сделать такие смарты чтобы они могли взорваться не понимая
> что владеют одним и тем же объектом".

зато есть паттерн "шарэд"
суть паттерна: гарантировать потребителям безопасный доступ к общему ресурсу.

реализовать такую гарантию можно множеством разных способов.

интрузив - одна из разновидностей шарэда.
всего лишь.

#497
(Правка: 0:38) 0:38, 14 мая 2021

Kartonagnick
> что бы гарантировать валидность выдаваемой ссылки, нужен шарэд.
> юник с таким запросами не годиццо.
Если у тебя время жизни объекта, на который ты выдаешь ссылку гарантированно превышает время жизни объектов, которые эту ссылку получают, то вполне годится.

> это - бессмысленно.
>
> ты отдаёшь себе отчет,
> что однажды выдав наружу такой юник-указатель,
> ты оставишь в векторе пустышку?
Ты наружу не отдаешь юник указатель, ты наружу отдаешь сырой указатель (но это работает только в случае, описанном выше)

#498
(Правка: 0:41) 0:39, 14 мая 2021

totoro
> Понял. А ты ответ понял?
да не похоже, что бы ты понял.
судя по твоему ответу.

я тебе по-русски пишу:
приведи хотя б один пример,
где действительно юник был бы, ну очень кстати.

для того что бы сделать объекту move,
юник не нужен.

#499
(Правка: 0:44) 0:43, 14 мая 2021

Kartonagnick
> зато есть паттерн "шарэд"

Класс shared pointer в С++ никакого отношения к shared resource не имеет.
Просто крестоотцы покорывявшись в носу вытащили оттуда козявку и решили что она значит такое имя.
От великих носокозявочных амбиций эта инициатива происходит и не более того.
shared_ptr не более чем костыльная попытка ввести в язык концепцию автоматического удаления не могущая понять даже что владеет одним и тем же объектом - т.е. полный кастрат.
Возвеличивать его как какую то стратегию - это возвеличивать идею кастрации.
На деле же это не более чем yet another failed попытка реализации умных указателей (сматов).
Умные указатели в случае шареда получились довольно тупыми.

#500
(Правка: 0:46) 0:44, 14 мая 2021

MrShoor
> Если у тебя время жизни объекта, на который ты выдаешь ссылку гарантированно
> превышает время жизни объектов, которые эту ссылку получают, то вполне годится.

"если" - это говнокод.
"шарэд" - это гарантия.

MrShoor
> Ты наружу не отдаешь юник указатель, ты наружу отдаешь сырой указатель (но это
> работает только в случае, описанном выше)

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

#501
0:45, 14 мая 2021

=A=L=X=
> Класс shared pointer в С++ никакого отношения к shared resource не имеет.

я не понимаю, как можно быть таким упоротым.

#502
0:47, 14 мая 2021

Kartonagnick
> "если" - это говнокод.
Как скажешь, кэп. У меня в синглтонах, которые живут всё время приложения - вполне себе работает всегда.

#503
(Правка: 0:50) 0:50, 14 мая 2021

MrShoor
> Как скажешь, кэп. У меня в синглтонах, которые живут всё время приложения -
> вполне себе работает всегда.

ты походу из тех людей,
которые любят всё усложнять на ровном месте.

синглетону вообще не нужны никакие указатели.

открой для себя ссылки.

#504
(Правка: 1:01) 0:51, 14 мая 2021

Kartonagnick
> приведи хотя б один пример,
> где действительно юник был бы ну очень кстати.

class Resource
{
public:
    uint32_t param1;
    uint32_t param2;
    uint32_t param3;
    uint32_t param4;
    uint32_t param5;
    uint32_t param6;
    uint32_t param7;
    uint32_t param8;
};

std::unique_ptr<Resource> CreateResource() ; // sometimes throws an exception

class Owner
{
public:
    Owner()
        : resource1(CreateResource())
        , resource2(CreateResource()) // ой, кидается!
    {
    }

    void DoSomeLogic();

private:
    std::unique_ptr<Resource> resource1;
    std::unique_ptr<Resource> resource2;
};

> для того что бы сделать объекту move,
> юник не нужен.
Структуре из простых типов этот мув как собаке пятая нога.

#505
0:56, 14 мая 2021

totoro
> > приведи хотя б один пример,
> > где действительно юник был бы ну очень кстати.

вообще то, я имел ввиду реальный пример.
а не такой, который не_работает.

+ Показать
#506
0:56, 14 мая 2021

totoro
> Структуре из простых типов этот мув как собаке пятая нога.
и?  к чему ты щас это написал?

#507
1:00, 14 мая 2021

Kartonagnick
> удаление неполного типа
Ок, поправил.

> и?  к чему ты щас это написал?
К тому что не всякому объекту можно сделать мув.

#508
1:07, 14 мая 2021

totoro
> Ок, поправил.
нет. не поправил
главный гемморой то ты почему то непоказал.

+ Показать


totoro
> К тому что не всякому объекту можно сделать мув.

вот что ты, что Алкс, что MrShoor...
вы прежде чем что нить ляпнуть,
вы вообще думаете, что пишете?

к любому объекту всегда можно применить move.

#509
1:09, 14 мая 2021

Kartonagnick
> error: use of deleted function ‘Owner::Owner(const Owner&)’
Это не геморрой, а фича.

> к любому объекту всегда можно применить move.
Ну продемонстрируй нам тогда, как можно объект класса Resource помувать?

Страницы: 133 34 35 3638 Следующая »
ФлеймФорумПрограммирование