Свързани въпроси 'shared-ptr'

Как да постигнем ковариантни връщани типове при връщане на shared_ptr?
using namespace boost; class A {}; class B : public A {}; class X { virtual shared_ptr<A> foo(); }; class Y : public X { virtual shared_ptr<B> foo(); }; Върнатите типове не са ковариантни (нито, следователно, са законни), но...
2488 изгледи

Luabind: Не може да върне shared_ptr
Опитвам се да върна std::shared_ptr от метод, свързан с Luabind, но изглежда не разпознава типа. Код на Luabind: module(lua) [ class_<Character, BaseEntity, std::shared_ptr<Character> > ("Character"),...
1246 изгледи
schedule 18.09.2022

c++ Observer Pattern: необработени указатели срещу shared_ptr?
В процес съм на преобразуване (поне) на част от моя код към използване на shared_ptr. Въпреки това срещам проблем с модела Observer, който използвам. Имам клас презентатор (Model View Presenter), който прилага модела Observer и получава известия,...
2975 изгледи
schedule 04.12.2022

върнати вектор‹Foo› или shared_ptr‹vector‹Foo››?
във функция, кое "връщане" би било по-подходящо? A. vector<Foo> ? B. shared_ptr<vector<Foor>> ? С други думи, кое копие е по-малко тежко, какво бихте направили и защо?
1909 изгледи
schedule 10.12.2022

Каква политика shared_ptr да се използва с асинхронна схема?
Имам собствена многонишкова услуга, която обработва някои команди. Услугата се състои от анализатор на команди, работни нишки с опашки и някои кешове. Не искам да държа под око жизнения цикъл на всеки обект, така че използвам shared_ptr много...
281 изгледи
schedule 15.11.2022

Грешка: очаква се спецификатор на тип преди 'ClassName'
shared_ptr<Shape> circle(new Circle(Vec2f(0, 0), 0.1, Vec3f(1, 0, 0))); shared_ptr<Shape> rect(new Rect2f(Vec2f(0, 0), 5.0f, 5.0f, 0, Vec3f(1.0f, 1.0f, 0)) ); Опитвам се да разбера защо...
180819 изгледи
schedule 05.11.2022

Константност на C++11 shared_pointer в stl контейнери
Имам следния проблем и се чудя дали има по-добър начин да го реша: class myObj { public: typedef std::shared_ptr<myObj> handle; typedef std::shared_ptr<const myObj> const_handle; int someMethod() { ... } int...
311 изгледи
schedule 03.12.2022

C++11: Как се изтрива обект, ако е конструиран с помощта на make_shared
Липсва ми нещо за споделени/слаби указатели: Когато shared_ptr се конструира с помощта на make_shared , се използва само едно разпределение на памет (за разпределяне на памет за контролен блок и самия обект). Какво се случва, когато последните...
527 изгледи

2D масив в обхват на файл/програма
Имам нужда от масив, до който мога да получа достъп от различни методи, трябва да разпределя този масив в main() и след това да позволя на други функции като foo() да получат достъп до този масив. Този въпрос ми помогна с разпределянето на масива:...
143 изгледи

Защо shared_pointer не позволява дефиниция като ptr = нов обект;
Възможен дубликат: Защо shared_ptr има изричен конструктор Обърква ме защо std::shared_ptr<int> p1(new int(10)); е ОК, докато std::shared_ptr<int> p2 = new int(10); се проваля? Мисля , че двете трябва да бъдат...
66 изгледи
schedule 30.11.2023

C++: не е полиморфен тип, докато използва boost::dynamic_pointer_cast
Защо получавам следната грешка за следния код? 1>C:\Libs\boost_1_44\boost/smart_ptr/shared_ptr.hpp(259): error C2683: 'dynamic_cast' : 'my_namespace::A' is not a polymorphic type 1> D:\[location]\[header_filename].h(35) : see...
22810 изгледи

тип преобразуване при връщане от функция с shared_ptr
std::shared_ptr<AbstractPrinter> parse_input_fiz(char const *input) { std::shared_ptr<FizPrinter> printer(FizPrinter); return printer; } FizPrinter е наследен от AbstractPrinter. И получих следващата грешка: Описание...
140 изгледи
schedule 12.12.2023

C++ итератор със слаби указатели към контейнерни елементи
Имам контейнер с общо дърво и бих искал да внедря итератор, който да обхожда неговите елементи. В основния контейнер използвах споделени указатели за свързване на различните възли на дървото. Има ли смисъл да се прилага итератор, използващ слаби...
354 изгледи
schedule 01.11.2023

shared_ptr, weak_ptr и кръгови зависимости
Мисля, че въпросът ми е подобен на разликите в shared_ptr и weak_ptr , но аз съм интересуват се да видят как работят заедно, а не списък с различия. Страницата на Wikipedia на shared_ptr и weak_ptr посочва, че weak_pointer може да се използва...
1631 изгледи

Как да прехвърлям shared_ptr‹A› към shared_ptr‹B›, където B се извлича от A?
Имам контейнер std::list, съдържащ споделени указатели от клас A, да речем. Имам друг клас, да речем B, който е извлечен от A. В момента имам код, който прави това, за да попълни контейнера: shared_ptr<B> b = shared_ptr<B>(new B);...
378 изгледи
schedule 23.10.2023

shared_ptr присвояване - копира ли се и персонализираната програма за изтриване?
Голяма част от документацията посочва, че при присвояване управляваният обект се копира. Изглежда нищо не говори за изтриващия или контролния блок. Например: std::shared_ptr<A> a(new A, D()); std::shared_ptr<A> b; b = a; Ако...
1102 изгледи
schedule 02.02.2024

Как се изчислява подравняването на обекти и shared_ptrs?
Да кажем, че имам обект, управляван от споделен указател: shared_ptr<X> . Да кажем, че моят X клас е с размер 98 байта, като последният член на данните е байт 97-98 (символ). Най-общо казано, споделеният ptr съдържа необработен указател...
207 изгледи
schedule 02.03.2024

Прехвърляне на споделен указател към производен клас с допълнителна функционалност - това безопасно ли е?
Помислете за следната схема: class Base { /* ... */ }; class Derived : public Base { public: void AdditionalFunctionality(int i){ /* ... */ } }; typedef std::shared_ptr<Base> pBase; typedef std::shared_ptr<Derived> pDerived; int...
5243 изгледи
schedule 01.04.2024

Обектът std::shared_ptr може ли да бъде намерен от неговия std::weak_ptr?
Така че имам std::vector<std::shared_ptr<T>> myListOfT; и имам std::weak_ptr<T> ptrToOneT; , който е създаден от един от указателите, използвани за запълване на този контейнер (да кажем, че го имам във функция за обратно...
1023 изгледи
schedule 17.04.2024

Прехвърляне на shared_ptr‹T› към shared_ptr‹void›
Имам структура: struct Params { std::shared_ptr<void> user_data; /* ... */ }; Искам да го използвам така: int main() { std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100)); Params params; /* ... */...
1700 изгледи
schedule 13.06.2024