Свързани въпроси '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 изгледи
schedule
18.09.2022
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 изгледи
schedule
12.11.2022
2D масив в обхват на файл/програма
Имам нужда от масив, до който мога да получа достъп от различни методи, трябва да разпределя този масив в main() и след това да позволя на други функции като foo() да получат достъп до този масив.
Този въпрос ми помогна с разпределянето на масива:...
143 изгледи
schedule
25.11.2023
Защо 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 изгледи
schedule
12.12.2023
тип преобразуване при връщане от функция с 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 изгледи
schedule
29.12.2023
Как да прехвърлям 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