Size: a a a

2021 February 12

FS

Flower Surgeon in supapro.cxx
d7d1cd
А получится ли используя std::includes определить входит ли std::map<std::string, int> в std::set<std::pair<std::string, int>>?
Можно.
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Aleksander Mironov
Подскажите, а расположение полей в памяти гарантируется как-либо?
(если не брать в расчет выравниваение)

Как в сишечке - получили указатель на структуру и знаем, что все поля друг за другом идут в ней.
Или в СИ это тоже не гарантировалось?
Гарантируется в пределах одной public/private/protected секции емнип
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Aleksander Mironov
Наверно я дурак и не правильно вопрос поставил изначально.
Имеет ли право компилятор напихать че своего в начало памяти занимаемой экземпляром класса, в его середину.
Перемешать поля местами и тп?
В начало нет. Перемешивать секции между собой имеет, всталять что-то между секциями имеет
источник

S

SupaproBot in supapro.cxx
Чем просто list отличается от односвязного списка?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
std::list двусвязный
источник

SP

Sergey Piskunov in supapro.cxx
Подскажите, почему приложуля крашится после вот такой конструкции?
m_gameStates[Menu] = std::unique_ptr<GameState>(new MenuState(shared_from_this()));
Ошибка
terminate called after throwing an instance of 'std::bad_weak_ptr'
 what():  bad_weak_ptr
MenuState хочу передать указатель на самого себя (объект Game)
std::array m_gameStates заполняется в конструкторе Game
источник

AS

Anatoly Shirokov in supapro.cxx
Sergey Piskunov
Подскажите, почему приложуля крашится после вот такой конструкции?
m_gameStates[Menu] = std::unique_ptr<GameState>(new MenuState(shared_from_this()));
Ошибка
terminate called after throwing an instance of 'std::bad_weak_ptr'
 what():  bad_weak_ptr
MenuState хочу передать указатель на самого себя (объект Game)
std::array m_gameStates заполняется в конструкторе Game
Еще не создан shared_ptr, указатель на который ты хочешь получить через shared_from_this
источник

SP

Sergey Piskunov in supapro.cxx
А как поправить?
источник

AS

Anatoly Shirokov in supapro.cxx
Sergey Piskunov
А как поправить?
Сначала создать shared_ptr или отказаться от weak_ptr, если у тебя агрегация, в пользу указателя или ссылки
источник

AS

Anatoly Shirokov in supapro.cxx
Скажем, если агрегат содержит дочерние объекты и отвечает за время их жизни, то дочерние объекты вполне могут обойтись ссылкой на агрегат
источник

MK

Mikhail Kalugin in supapro.cxx
Ilia Zviagin
Это вообще невозможно, *(void*) -- не тип
Только не void* - как минимум unsigned char, UB ибо в общем случае как оно лежит в памяти решает компилятор и ни кто не гарантирует одно и то же поведение на каждой существующей в природе платформе.
источник

SP

Sergey Piskunov in supapro.cxx
Перестала падать с вот такой конструкцией
m_gameStates[Menu] = std::unique_ptr<GameState>(new MenuState(static_cast<std::shared_ptr<Game>>(this)));
источник

SP

Sergey Piskunov in supapro.cxx
@anatolijs Пойдёт? )
источник

AS

Anatoly Shirokov in supapro.cxx
Нет
источник

SP

Sergey Piskunov in supapro.cxx
:/
источник

AN

Alexander N in supapro.cxx
Может лучше было make_unique?
источник

AS

Anatoly Shirokov in supapro.cxx
Ты подумай что ты сделал
источник

D

Dmitriy in supapro.cxx
Mikhail Kalugin
Только не void* - как минимум unsigned char, UB ибо в общем случае как оно лежит в памяти решает компилятор и ни кто не гарантирует одно и то же поведение на каждой существующей в природе платформе.
Откуда UB?
источник

AS

Anatoly Shirokov in supapro.cxx
Ты this отдал под управление еще одного shared_ptr
источник

AN

Alexander N in supapro.cxx
Что за каст в shared_ptr
источник