@ProCxx

Страница 1776 из 2477
Ilia
21.02.2018
09:08:39
А, так ё...

Max
21.02.2018
09:09:05
Александр
21.02.2018
09:09:19
Ilia
21.02.2018
09:09:31
Всё ясно. Нельзя там делать через make_shared. Класс Singleton родительский является friend. А функция make_shared — НЕТ.

Google
Radio
21.02.2018
09:09:34
Какое такое? Ты возвращаешь ссылку на существующий обьект, он НЕ временный. Почему она должна не работать?
согласен, получаем ссылку на мембер через временный указатель, на судьбу которого наплевать

Max
21.02.2018
09:09:36
никак
Переписать и не ибаццо с шаблонами?

Александр
21.02.2018
09:10:05
Ilia
21.02.2018
09:10:34
Кстати, shared_ptr там нафиг не нужен и также это всё ещё к тому же и не потокобезопасно. Так что надо инстанст создать локально в функции по значению, и вернуть на него ссылку.

Александр
21.02.2018
09:10:37
вообще странно, что std не предоставляет какого-нибудь класса shared_creator, которому можно прописать friend class shared_creator

Max
21.02.2018
09:11:21
вообще странно, что std не предоставляет какого-нибудь класса shared_creator, которому можно прописать friend class shared_creator
Но тут отсутствие шаблона не спасает, конструктор все равно будет приватный

Ilia
21.02.2018
09:11:39
static T& get() { static T s_instance; return s_instance; }

Max
21.02.2018
09:11:55
Тогда просто создать через new и все?

Alexander
21.02.2018
09:11:56
всё равно я придерживаюсь мнения, что нужно давать пользователю возможность выбирать размер буфера на стеке

Alexander
21.02.2018
09:13:00
только вот не совсем понятно, что делать в случае: число стало больше буфера на стеке, аллоцируем память на куче. Потом число уменьшилось и снова вмещается на стек. и что - обратно будем копировать на стек уже?

Max
21.02.2018
09:13:06
Я ж написал
Так оно так и работат, но хочу сменить без статик переменной, т.к. с ней тесты не напишешь, потому что мне нужно на тест удалять и создавать его по своему

Google
Alexander
21.02.2018
09:14:42
а если у нас кейсы что постоянно на грани, то постоянно прыгать туда-сюда не хочется

если SSO, то такие прыжки могут иметь место и их не исправить так просто. Если указываем размер, то просто меняем размер буфера на стеке

Alexander
21.02.2018
09:20:29
но мне кажется, что там через кучу ничего не гоняется

надо глянуть, что там под капотом у cpp_int

Radio
21.02.2018
09:23:23
Тогда просто создать через new и все?
тут развернуто об этом: https://stackoverflow.com/questions/8147027/how-do-i-call-stdmake-shared-on-a-class-with-only-protected-or-private-const/8147213#8147213 спасибо за тему =)

Ilia
21.02.2018
10:26:28
Ну а занафига там shared?

Berkus
21.02.2018
10:29:49
Ну а занафига там shared?
shared_ptr<host> h(host::create()); занафига тут shared? рассказать или сам догадаешься

понятно что для синглтона шаред не особо нужен

Ilia
21.02.2018
10:32:09
Berkus
21.02.2018
10:32:27
ну может он удалябельный синглтон мутит

чудо из чудес

Max
21.02.2018
10:33:12
ну может он удалябельный синглтон мутит
Как по другому его в юнит тесты пихнуть?

Ilia
21.02.2018
10:33:44
Resurrectable singleton? Zomby Singleton ?

Google
Max
21.02.2018
10:33:46
КОГО?
Синглтон, который я использую

Ilia
21.02.2018
10:34:20
Тебе какая разница какой инстанс класса в тесты запихать? Создай другой

Berkus
21.02.2018
10:34:29
Синглтон, который я использую
в юнит тесты точно так же как и в обычную программу, не вижу разницы чот

Max
21.02.2018
10:35:08
в юнит тесты точно так же как и в обычную программу, не вижу разницы чот
Ну мне нужно чтоб на каждый тест он заново создавался

Berkus
21.02.2018
10:35:22
Ну мне нужно чтоб на каждый тест он заново создавался
не делать синглтоны вообще. никогда

Ilia
21.02.2018
10:36:44
Ну мне нужно чтоб на каждый тест он заново создавался
Я ж говорю, это новый паттерн! Zomby Singleton! Zombiltone !

mefest
21.02.2018
10:38:22
Я ж говорю, это новый паттерн! Zomby Singleton! Zombiltone !
осталось выпустить новую книгу по паттернам

Pavel
21.02.2018
10:40:21
а можно я ещё раз скажу, что синглтон это клёвый способ рулить порядком инициализации статических объектов?

Ilia
21.02.2018
10:40:48
А тебе часто надо им рулить?

Max
21.02.2018
10:41:17
не делать синглтоны вообще. никогда
Удобная штука в некоторых случаях

Berkus
21.02.2018
10:41:28
Anatoly
21.02.2018
10:41:52
а можно я ещё раз скажу, что синглтон это клёвый способ рулить порядком инициализации статических объектов?
все объекты должны создаваться в мейне и связи между объектами должны быть установлены там же. "жуликов по телевизору показывают. чем я хуже?" (с)

Antony
21.02.2018
10:43:28
все объекты должны создаваться в мейне и связи между объектами должны быть установлены там же. "жуликов по телевизору показывают. чем я хуже?" (с)
Ну или как минимум - все связанные объекты должны создаваться в одной и той же единице трансляции (не обязательно в main)

Ilia
21.02.2018
10:44:23
ловко. но, нет. я в это не верю.
Порядок инициализации глобальных (статических) объектов вроде бы по стандарту всё ещё не определён. Но ты можешь не верить...

Pavel
21.02.2018
10:44:37
Ilia
21.02.2018
10:45:42
ловко. но, нет. я в это не верю.
Вообще, это же здорово, что кто-то не верит, что земаля плоская (круглая)...

Google
Antony
21.02.2018
10:46:20
ловко. но, нет. я в это не верю.
Есть еще одна фишка - константная инициализация. Пометьте конструкторы ваших синглтонных объектов как constexpr (если это возможно, при этом тривиальный деструктор не обязателен) и ваша программа загрузится в память с уже проинициализированными классами

следить за порядком кучки SomeSigngleton::get() в main() проще чем за единицами трансляции
Звучит так, будто все эти переменные можно просто объявить в одном cpp файле и не пользоваться singleton

Berkus
21.02.2018
10:50:25
нуда. он зависит от порядка трансляции. поэтому я и за синглтоны в этом случае
окей, удачи в удалении и пересоздании этих синглтонов, а также в мульти-инстанциировании твоей либы

Ilia
21.02.2018
10:51:11
Вообще, мне кажется эта тема не имеет общего для всех приложений фундамента. Слишком всё индивидуально. Так что мне кажется серьёзно обсуждать нет смысла.

Anatoly
21.02.2018
10:51:27
кто сказал что я либы пишу?
а ты один код поддерживаешь?

Admin
ERROR: S client not available

Pavel
21.02.2018
10:52:51
шаблоны рвать вообще полезно. ну, по жизни.

Anatoly
21.02.2018
10:52:57
коряво спросил. в одиночку?

Pavel
21.02.2018
10:53:27
какая разница?

Pavel
21.02.2018
10:54:01
когда в двоем смотришь на синглтон в приложении, то он превращается в чтото другое?

Berkus
21.02.2018
10:54:32
когда школу закончишь, поймешь что синглтоны не нужны

39170
21.02.2018
10:54:34
/vzhuh@FailsBot

Дед Пегас
21.02.2018
10:54:48
Самый смак это покрывать тестами синглтон.

Max
21.02.2018
10:55:05
назови хотя бы один?
Например мой. Есть говно-архитектура, хуже чем ее отсутсвие. Тебе нужен обьект для имплементации некоторой функциональности, которую надо было на вчера. На существующей говно-архитектуре тебе его использовать в классе 1 и классе 10, но они связаны по цепочке класс 1 - класс 2 - ... - класс 10. Лучше пихать твой обьект по всей цепочке 1 - 10? Или все же заюзать синглтон?

Знатно я на вентилятор закинул...

Google
Дед Пегас
21.02.2018
10:55:35
Пихать лучше.

Время рефакторинга!

FailsBot
21.02.2018
10:57:18
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆

Ilia
21.02.2018
10:58:35
Например мой. Есть говно-архитектура, хуже чем ее отсутсвие. Тебе нужен обьект для имплементации некоторой функциональности, которую надо было на вчера. На существующей говно-архитектуре тебе его использовать в классе 1 и классе 10, но они связаны по цепочке класс 1 - класс 2 - ... - класс 10. Лучше пихать твой обьект по всей цепочке 1 - 10? Или все же заюзать синглтон?
Понимаешь, по сути синглтон — это просто глобальная переменная. Это такой говнопаттерн. Он существует по одной причине — ООП-фанатики не любят глобальные переменные. Почему — не очень ясно. Но их от них воротит. Им плохо. А если они видят синглтон — они понимают, что это ООП, и успокаиваются. Им хорошо. Именно поэтому синглтон — это замечательная вещь (не слушай Беркуса :-) )

Дед Пегас
21.02.2018
10:59:20
кек

Ilia
21.02.2018
11:00:42
Мне не нужны никакие книги, я и так профессионал!

Pavel
21.02.2018
11:01:50
а если при пропихивании ктонибудь забыл написать & и оно теперь падает непонятно где?

Дед Пегас
21.02.2018
11:02:49
Pavel
21.02.2018
11:03:18
однако

Дед Пегас
21.02.2018
11:03:25
И никто ничо не забудет. Если не будет как мудак передавать объект, обёрнутый в шаред, по ссылке.

Radio
21.02.2018
11:04:46
Время рефакторинга!
Капитан Рефакторинг?

Дед Пегас
21.02.2018
11:06:29
Anatoly
21.02.2018
11:07:04
надо признать, хороший обед вышел :)

Radio
21.02.2018
11:07:34
Да!
Точечный багфикс:

Страница 1776 из 2477