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

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

Страницы: 133 34 35 36 37 38 Следующая »
#525
1:57, 14 мая 2021

totoro
> А я забыл сказать, что ресурс в DoSomeLogic пересоздается несколько раз.
не принципиальный момент.

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


#526
(Правка: 2:06) 2:06, 14 мая 2021

Kartonagnick
> но в том, что касается конкретно сиглетона:
> поскольку время его жизни - до конца программы,
> то ссылка на него протухнуть не может просто по определению.
Только вот ссылка не на синглтон, а на объекты, которые он овнит внутри себя. Ладно, я понял, человеческую речь ты уже не понимаешь, вот тебе на языке си плюс плюс:

//h
const Foo& ObtainFoo(std::string name);

//cpp

class MySingletone {
private:
  std::vector<std::unique_ptr<Foo>> m_items;
public:
  const Foo& ObtainFoo(std::string name) {
    for (const auto& f : m_items) {
      if (f->name == m_items) return *f.get();
    }
    m_items.push_back(std::make_unique<Foo>(std::move(name)));
    return *m_items.back().get();
  }
};
MySingletone s;

const Foo& ObtainFoo(std::string name) {
  return s.ObtainFoo(std::move(name));
}
Без unique_ptr все ссылки превратятся в тыкву, когда std::vector ресайзнется.
#527
(Правка: 2:19) 2:18, 14 мая 2021

MrShoor
> человеческую речь ты уже не понимаешь, вот тебе на языке си:

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

люди часто говорят (или пишут) даже не вдумываясь в смысл слов,
которые они используют.

вот например, ты пишешь:
> вот тебе на языке си:

но это - не пример на языке си.
это - пример на языке с++

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

и мне не приходилось бы постоянно переспрашивать и уточнять.

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

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

#528
2:23, 14 мая 2021

Kartonagnick
> но это - не пример на языке си.
> это - пример на языке с++
я это исправил через 10 секунд, после того как опубликовал

> а в том, что касается программирования:
> подкрепить свой тезис примером-иллюстрацией кода,
> это - позиция здорового человека.
Прости. Я просто думал что ты настоящий программист (и поэтому сталкивался с ситуацией, когда нужно, чтобы ссылки не протухали). Впредь буду иметь ввиду, что это не так.

#529
(Правка: 3:15) 2:28, 14 мая 2021

MrShoor
> Без unique_ptr все ссылки превратятся в тыкву, когда std::vector ресайзнется.

всё тоже самое можно получить гораздо проще:  std::list<Foo>

+ Показать

#530
(Правка: 2:31) 2:30, 14 мая 2021

MrShoor
> Прости. Я просто думал что ты настоящий программист (и поэтому сталкивался с
> ситуацией, когда нужно, чтобы ссылки не протухали). Впредь буду иметь ввиду,
> что это не так.

ты сам то понял, что за херню ты написал?
вот как это высосанное из пальца бла-бла-бла связанно
с предыдущим сообщением?

я тебя не прощаю.
потому что ты несёшь слишком уж глупую глупость.

если уж ты решил высосать что нибудь из пальца,
тогда по краней мере всысывай посильнее.
бери глубже.

#531
5:36, 14 мая 2021

А вот и не подерётесь!

а я и не подстрекатель...

#532
(Правка: 7:19) 7:18, 14 мая 2021

Kartonagnick
> не принципиальный момент
Ну а тогда объект класса Resource скрыт за абстрактным интерфейсом, мы ничего не знаем про его реализацию. Т.е. нельзя просто так взять и выкинуть ф-ию CreateResource

#533
7:24, 14 мая 2021

MrShoor
> И таких извращений в плюсах вагон

что делать ? юзать паскаль или шо?

#534
(Правка: 15 мая 2021, 17:43) 10:12, 14 мая 2021

totoro
> Ну а тогда объект класса Resource скрыт за абстрактным интерфейсом, мы ничего
> не знаем про его реализацию

приведи человеческий минимальный компилябельный пример-иллюстрацию
со ссылкой на онлайн компилятор.

сейчас с твоих слов там еще и кастомный делиттер вырисовыаеццо,
что ещё добавляет геморняка
к итак уже дурно пахнущей орхитэктурке.

а я потом возьму твой пример.
выкину оттуда нафиг юник_птр,
кода сразу станет меньше.
код станет проще.

#535
17:43, 14 мая 2021

ну это например pimpl, по значению хранить нельзя из-за того что это просто forward declaration

#536
(Правка: 17:42) 17:23, 15 мая 2021

#!
> ну это например pimpl, по значению хранить нельзя из-за того что это просто
> forward declaration

у кого низкая квалификация - нельзя.
всем остальным - можно.

+ rImpl
#537
(Правка: 18:01) 17:58, 15 мая 2021

Kartonagnick
> constexpr size_t sizeOfResource = 64;
>
> // ресурс аллоцируется в буфере
> // указанного нами размера
> rimpl<resource, sizeOfResource> secret;
А откуда берётся магическая константа 64?
И что будет если ресурс окажется больше указанного размера?

#538
(Правка: 20:14) 18:03, 15 мая 2021

std::variant
> А откуда берётся магическая константа 64?

это - не магическая константа.
это:
> constexpr size_t sizeOfResource = 64;

ты в курсе вообще,
чем "магическая константа" отличается от "не_магической" ?

+ sizeOfResource

std::variant
> И что будет если ресурс окажется больше указанного значения = 64?
зависит от фантазии конкретного разработчика конкретного rImpl.

но поскольку с фантазией у нашего брата не очень,
то обычно, дело ограничивается банальным static_assert.

#539
19:07, 15 мая 2021

Kartonagnick
> ты в курсе вообще, чем "магическая константа" отличается от "не_магической" ?
я имел ввиду, что компилятор должен нам как-то сказать, во время первой компиляции,
что sizeOfResource == 64.
И ещё что-то мне подсказывает, что в деструкторе нужно руками выставлять:

this->secret.~rimpl();
Страницы: 133 34 35 36 37 38 Следующая »
ФлеймФорумПрограммирование