Вопросы с тегом «shared-ptr»

Класс умного указателя с подсчетом ссылок, реализующий совместное владение

2
Почему shared_ptr <void> законно, а unique_ptr <void> неправильно сформирован?
Вопрос действительно умещается в заголовке: мне любопытно узнать, в чем техническая причина этой разницы, а также ее обоснование? std::shared_ptr&lt;void&gt; sharedToVoid; // legal; std::unique_ptr&lt;void&gt; uniqueToVoid; // ill-formed;

4
Передача shared_ptr <Derived> как shared_ptr <Base>
Каков наилучший способ передать a shared_ptrпроизводного типа функции, которая принимает shared_ptra базового типа? Я обычно передаю shared_ptrs по ссылке, чтобы избежать ненужной копии: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); но это не сработает, если я попытаюсь сделать что-то вроде int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); Я мог бы …

5
Передача общих указателей в качестве аргументов
Если я объявляю объект, заключенный в общий указатель: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); затем я хотел передать его как аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Это просто увеличивает счетчик ссылок shared_pt, и все в порядке? Или он оставляет висящий указатель? Вы все еще должны …

7
Пример использования shared_ptr?
Привет, я сегодня задал вопрос о том, как вставлять разные типы объектов в один и тот же векторный массив, и мой код в этом вопросе был gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { …

3
Хранитель shared_ptr хранится в памяти, выделенной пользовательским распределителем?
Скажем, у меня есть shared_ptrпользовательский распределитель и пользовательский удалитель. Я не могу найти в стандарте ничего, что говорит о том, где должен храниться удалитель: он не говорит, что пользовательский распределитель будет использоваться для памяти удалителя, и не говорит, что этого не будет. Это не указано или я просто что-то упустил?
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.