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

Нужен ли виртуальный деструктор для вашего интерфейса, если вы всегда храните его в shared_ptr?
Поскольку boost::/std::shared_ptr имеет преимущество удаления типа удаления, вы можете делать такие приятные вещи, как #include <memory> typedef std::shared_ptr<void> gc_ptr; int main(){ gc_ptr p1 = new int(42); gc_ptr p2 = new...
1200 просмотров

Другой шаблонный класс в наборе с использованием boost :: shared_ptr
У меня есть некоторые проблемы с дизайном, я подумал, что один из вас может мне чем-то помочь. Я попытался резюмировать свою проблему на этом простом примере: У меня есть два разных класса DerivedOne и DerivedTwo , которые наследуются от...
235 просмотров
schedule 18.10.2022

C++: ошибка при копировании из *std::shared_ptr
У меня есть функция, которая возвращает общий указатель на объект (сложно включить определение MyObject из-за множества больших зависимостей): std::shared_ptr<MyObject> f(std::string params) { return std::shared_ptr<MyObject>(new...
546 просмотров
schedule 02.11.2022

std::auto_ptr против std::tr1::shared_ptr
Возможный дубликат: Какой тип указатель использовать когда? Я читал, что std::auto_ptr устарело, поэтому вместо него нужно использовать std::tr1::shared_ptr . Как я читал, разница в том, что std::tr1::shared_ptr имеет подсчет...
697 просмотров
schedule 15.04.2024

C++ доступ к типу массива shared_ptr
Я делаю оболочку для базы данных SQL и возвращаю объекты shared_ptr . Я хотел бы поддерживать доступ типа массива (т.е. row["column"] вместо row->get("column") ). Объекты, хранящиеся в shared_ptr , поддерживают доступ типа массива, но,...
270 просмотров
schedule 14.06.2024

почему я получаю это исключение времени выполнения при использовании shared_ptr?
В следующем коде после возврата 1 я получаю следующее исключение времени выполнения (возможно, утечку памяти); и в деструкторе Node (). Unhandled exception at 0x0f9bad4a (msvcp100d.dll) in test.exe: 0xC0000005: Access violation reading location...
5349 просмотров
schedule 25.10.2022

О shared_ptr и указателе на оператор-член `-›*` и `std::bind`
Недавно я обнаружил, что shared_ptr не имеет указателя на оператор-член ->* . Я создал простой пример: template <typename Pointer, typename Function, typename... Args> auto invoke1(Pointer p, Function f, Args... args) ->...
2070 просмотров

Использование указателя const на класс в функции
Я широко использую std::shared_ptr в своем коде. У меня есть несколько функций, которые я хочу вызывать из MyClass, используя «это», поэтому я объявил эти функции как (например) int AnotherClass::foo(const MyClass *obj) { } Я хочу, чтобы...
2832 просмотров
schedule 12.09.2022

Как я могу использовать shared_ptr повышения в этой ситуации?
У меня 2 класса: A и B . В классе A у меня есть указатель на B, называемый Bptr. Я выделяю память для Bptr в конструкторе A и освобождаю память для Bptr в деструкторе A. class B { //whatever public: B(int,int); } class A { private:...
84 просмотров
schedule 08.04.2024

C++ 11 Владение интеллектуальным указателем и приведение
У меня есть базовый класс сущностей и производные классы, такие как коровы и куры... using namespace std; class Entity { list<shared_ptr<Relationship>> relationships; void createRelationship(weak_ptr<Entity> other,.......
1337 просмотров
schedule 23.11.2023

Ссылаясь на это как на shared_ptr?
Я изучаю функции С++ 11, в частности shared_ptr , и у меня возникла проблема со ссылкой на this и использованием ее в качестве ссылки для других классов. Причина этого в том, что у меня есть экземпляр Simulation , который передается другим...
398 просмотров
schedule 06.03.2024

Вывести аргумент weak_ptr из shared_ptr
Следующее дает мне ошибку компилятора: не удалось вывести аргумент шаблона для «const std::weak_ptr‹_Ty> &» из «std::shared_ptr» #include <memory> class Foo { public: template<typename R> void...
1335 просмотров
schedule 14.08.2022

Преобразование shared_ptr в shared_ptr того же типа в другом пространстве имен
У меня есть этот Foo class , где он содержит от shared_ptr до Hotel class и ссылку на Rules class (который находится внутри namespace Rules ): class Foo { public: //... void doStuff(); private: std::shared_ptr<Hotel>...
575 просмотров
schedule 30.10.2022

Ссылки на общие указатели
В моем коде я использую общий указатель, используя функцию boost shared_from_this. Чтобы не усложнять, общий указатель разделяется на аналогичные строки, как показано ниже: class Q: public enable_shared_from_this<Q> { public:...
391 просмотров
schedule 30.07.2022

std::shared_ptr, std::weak_ptr и блок управления
Недавно я читал о функции std::make_shared . Насколько я понял из книги Effective Modern C++ , функция make должна быть предпочтительнее, если только: Имеется пользовательское управление памятью. Есть проблемы с памятью, такие как...
1033 просмотров
schedule 24.07.2022

Прерывание циклических ссылок с помощью std::weak_ptr и конструктора псевдонимов: разумно или проблематично?
Я еще не нашел описанного ниже способа разрыва циклических ссылок на каком-либо крупном форуме/блоге C++, например, на GotW, поэтому я хотел спросить, известна ли эта техника и каковы ее плюсы и минусы? class Node : public...
208 просмотров
schedule 12.05.2024

Гарантируется ли истечение срока действия слабых указателей к моменту запуска средства удаления std::shared_ptr?
Если у меня есть std::shared_ptr<Foo> с пользовательским средством удаления, гарантируется ли, что все связанные слабые указатели будут рассматриваться средством удаления как просроченные? (Я был бы очень признателен, если бы вы могли...
526 просмотров
schedule 02.01.2024

Увеличить навязчивый указатель
Я немного смущен навязчивым указателем boost. В определении говорится: "Каждый новый экземпляр intrusive_ptr увеличивает счетчик ссылок, используя неквалифицированный вызов функции intrusive_ptr_add_ref , передавая ей указатель в качестве...
5393 просмотров

Выполняет ли make_shared инициализацию по умолчанию (нулевую инициализацию) для каждой переменной-члена
Возьмите обычную структуру (или класс) с типами и объектами Plain Old Data в качестве членов. Обратите внимание, что конструктор по умолчанию не определен. struct Foo { int x; int y; double z; string str; }; Теперь, если я...
2182 просмотров
schedule 01.09.2022

Как преобразовать shared_ptr из одного родительского класса в другой родительский класс?
Я нахожусь в процессе переделки своего игрового движка, чтобы использовать smart-pointers . У меня есть класс Object , от которого все наследуется. У меня есть GameObject, который можно визуализировать, поэтому он наследуется от IRenderable...
1135 просмотров