Публикации по теме 'shared-ptr'


Примечания по C++: #1
Время от времени, когда я пишу код на C++, мне любопытно, как поведет себя C++ при написании кода определенным образом. Большую часть времени в Compiler-Explorer, замечательном ресурсе, я провожу пробу этих различных комбинаций. Много раз я уже знал ответ, однако бывают случаи, когда C++ меня удивляет. Мой план состоит в том, чтобы составлять заметки, надеюсь, вести записи о том, что я пробовал, и пересматривать их в будущем, если это будет необходимо. Рассмотрим код ниже:..

Вопросы по теме 'shared-ptr'

умные указатели + это считается вредным?
В проекте C ++, который использует интеллектуальные указатели, такие как boost::shared_ptr , какова хорошая философия проектирования в отношении использования « this »? Считают, что: Опасно хранить необработанный указатель, содержащийся в...
4754 просмотров
schedule 21.09.2022

константа shared_ptr в shared_ptr
Как можно преобразовать shared_ptr, указывающий на константный объект, в shared_ptr, указывающий на неконстантный объект. Я пытаюсь сделать следующее: boost::shared_ptr<const A> Ckk(new A(4)); boost::shared_ptr<A> kk=const_cast<...
18616 просмотров
schedule 24.09.2022

Могу ли я получить необработанный указатель из weak_ptr boost?
Можно ли получить необработанный указатель из boost::weak_ptr? Shared_ptr Boost имеет метод get() и оператор «->». Есть ли какое-то объяснение тому, что у weak_ptr нет такой же функциональности?
5983 просмотров

Безумный векторный итератор C++
Я заявляю: typedef std::tr1::shared_ptr<ClassA> SharedPtr; А потом: std::vector<SharedPtr> mList; А также: typedef std::vector<SharedPtr>::iterator ListIterator; Возврат mList.size() равен 0, но когда я...
1154 просмотров

Как освободить ссылку на аргументы привязки boost :: signal2 :: signal keep?
Я обнаружил, что некоторые объекты в моей программе на C ++ не могут быть выпущены из-за того, что Signal2 of boost не выпустит эти аргументы в объекте, созданном с помощью boost :: bind. Вот код для воспроизведения проблемы: #include...
1432 просмотров
schedule 18.07.2022

Лучший способ управлять владением памятью в С++? Общие указатели или другие механизмы?
В новом фрагменте кода у меня есть несколько разных классов, которые ссылаются друг на друга. Что-то вроде этого (это не моя реальная ситуация, а пример чего-то подобного): class BookManager { ... }; class Book { public:...
742 просмотров
schedule 17.05.2022

Какова наилучшая стратегия для определения общих указателей?
У меня есть быстрый вопрос относительно использования typedefs для длинных шаблонов. Суть: я оказался в какой-то затруднительной ситуации — похоже, нет подходящего места для размещения определений типов, кроме локальных по отношению к клиентским...
5037 просмотров
schedule 13.05.2023

shared_from_this() из другого потока (функция потока-члена)
В моем коде я использую boost::threads , и у меня есть класс, который запускает поток через функцию-член с именем fnThread() . В этом fnThread() я хочу создать shared_from_this() и передать его слушающим сторонам с сигналом. Но строка...
2702 просмотров

Объект Gdiplus::Image и boost::shared_ptr
У меня есть простой класс кеша изображений в моем приложении MFC, чтобы отслеживать изображения, загружаемые из файловой системы: typedef boost::shared_ptr<Gdiplus::Image> ImagePtr; typedef std::map<std::string, ImagePtr> ImageMap;...
444 просмотров
schedule 30.01.2023

shared_ptr и weak_ptr различия
Я читаю книгу Скотта Мейерса «Эффективный C ++». Было упомянуто, что tr1::shared_ptr и tr1::weak_ptr действуют как встроенные указатели, но они отслеживают, сколько tr1::shared_ptrs указывает на объект. Это называется подсчетом ссылок. Это...
56088 просмотров

Обертывание std :: vector из boost :: shared_ptr в SWIG для Python
РЕДАКТИРОВАТЬ: Моя ошибка решена; объяснил в моем ответе. У меня есть это: std::vector < boost::shared_ptr < Entity > > entities; и пытаюсь выставить через SWIG вот так: %include "boost_shared_ptr.i" %include...
2754 просмотров
schedule 16.04.2024

pimpl: избегать указателя на указатель с помощью pimpl
В этом вопросе я спросил "pimpl: shared_ptr или unique_ptr" . убежден, что правильным использованием идиомы pimpl является использование unique_ptr , а не shared_ptr . Он должен действовать на пользователя так, как будто указателя нет вообще,...
955 просмотров
schedule 10.05.2022

С++ 0x std::shared_ptr против boost::shared_ptr
У меня есть код С++, который активно использует shared_ptr и STL. Общий заголовок говорит #include<boost/shared_ptr.hpp> using boost::shared_ptr; // for shared_ptr using namespace std; // for STL Сейчас я хотел переключиться на...
4135 просмотров
schedule 19.09.2022

BOOST_FOREACH Итерация над boost::shared_ptr‹list›
Я делаю что-то похожее на этот пункт Правильное использование BOOST_FOREACH? Однако мой возвращенный список завернут в boost::shared_ptr. Если я не назначу список переменной перед циклом BOOST_FOREACH, я получу сбой во время выполнения,...
2952 просмотров

Почему enable_shared_from_this встраивает слабый указатель вместо непосредственного встраивания счетчика ссылок?
Помощник enable_shared_from_this содержит слабый указатель, который устанавливается при создании общего указателя на объект. Это означает, что есть счетчик ссылок (выделенный отдельно или вместе с объектом с помощью make_shared ) и дополнительный...
1276 просмотров

boost :: shared_ptr parent ‹-› дочернее общение
Я использую boost :: shared_ptr для организации данных указателя в моем игровом движке. Я попытался привести очень короткий пример, чтобы показать свою проблему: class CSceneNode { public: CSceneNode(CScene *p) : parent(p) {} void...
800 просмотров
schedule 21.09.2022

В чем разница между автоматическими указателями и общими указателями в C ++
Я слышал, что автоматические указатели владеют своим объектом, тогда как общие указатели могут иметь много объектов, указывающих на них. Почему бы нам не использовать общие указатели все время. В отношении интеллектуальных указателей люди...
10355 просмотров
schedule 03.08.2023

Определение того, принадлежит ли объект интеллектуальному указателю
У меня есть класс, производный от enable_shared_from_this, и метод, который возвращает общий указатель, вызывая shared_from_this (). Я хотел бы в этом методе определить, принадлежит ли объект shared_ptr, а если не бросить. Я пробовал что-то вроде...
809 просмотров
schedule 22.10.2022

Почему определение boost :: shared_ptr для шаблонного класса ведет себя иначе, чем boost :: shared_ptr для не шаблонного класса
Я пытался интегрировать boost :: share_ptr в пару шаблонных классов, которые изначально были получены из найденного мной примера boost :: asio. Когда я определяю тип в одном классе, который является общим :: ptr этого класса. Кажется, я не могу...
1200 просмотров

Boost Asio — обработка резольвера и сокетов с помощью shared_ptr
У меня есть класс, который должен иметь возможность отправлять сообщения по TCP. Вот упрощенный интерфейс: class CommandScreenshot : public CameraCommand { public: CommandScreenshot(); ~CommandScreenshot(); void...
2052 просмотров
schedule 07.10.2022