Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
#1

shared_ptr и vector - C++

27.07.2013, 12:48. Просмотров 1676. Ответов 10
Метки нет (Все метки)

почему в vector нельзя засунуть shared_ptr ?
c:\qt\tools\mingw48_32\lib\gcc\i686-w64-mingw32\4.8.0\include\c++\ext\new_allocator.h|120|error: use of deleted function 'boost::shared_ptr<Ncom_din_un::Cdinamic_unit>::shared_ptr(const boost::shared_ptr<Ncom_din_un::Cdinamic_unit>&)'|

Добавлено через 31 секунду
C++
1
2
3
4
5
#if __cplusplus >= 201103L
      template<typename _Up, typename... _Args>
        void
        construct(_Up* __p, _Args&&... __args)
    { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2013, 12:48     shared_ptr и vector
Посмотрите здесь:

shared_ptr с потомками - C++
Добрый вечер, сейчас столкнулся с задачей хранить большие объемы динамически-выделенной памяти. Обычный массив Base* list не подходит, т.к....

shared_ptr валится - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; #include &quot;boost/shared_ptr.hpp&quot; class One { public: ...

Использование shared_ptr - C++
std::shared_ptr&lt;int&gt; sp(new int); sp = 12; std::cout &lt;&lt; sp; Расшареному указателю нельзя присваивать стандартные...

Реализация shared_ptr - C++
Добрый день. Реализовал shared_ptr(), но если больше 2 перемен он не правильно работает. Что я не правильно делаю и как правильно ...

Наследование от shared_ptr - C++
Добрый день. Подскажите вот какую вещь. Сделал удобный для себя класс для ведения логов. В нем переопределил operator&lt;&lt; след....

This для shared_ptr - C++
Как создать объект shared_ptr, в котором будет лежать this?

Weak_ptr и shared_ptr - C++
Спасибо что зашли в эту тему и уделили мне время. Недавно увидел статью (не реклама) http://habrahabr.ru/post/191018/ Есть такой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
27.07.2013, 12:48     shared_ptr и vector #2
Код?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 12:50  [ТС]     shared_ptr и vector #3
C++
1
2
3
      boost::shared_ptr<Ncom_din_un::Cdinamic_unit> q;
        std::vector< boost::shared_ptr<Ncom_din_un::Cdinamic_unit>> w;
        w.push_back(q);
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
27.07.2013, 12:53     shared_ptr и vector #4
Цитата Сообщение от Van111 Посмотреть сообщение
почему в vector нельзя засунуть shared_ptr ?
Легко влезло:
C++
1
2
3
vector<boost::shared_ptr<int>> v;
boost::shared_ptr<int> a;
v.push_back(a);
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 13:02  [ТС]     shared_ptr и vector #5
Цитата Сообщение от nonedark2008 Посмотреть сообщение
vector<boost::shared_ptr<int>> v;
boost::shared_ptr<int> a;
v.push_back(a);
у меня ругается, ИСПОЛЗУЮ mingw 4.82 из Qt Creator, стандарт с++ 11

Добавлено через 6 минут
nonedark2008, вы используете стандарт 98 года(проверил)
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
27.07.2013, 13:05     shared_ptr и vector #6
Цитата Сообщение от Van111 Посмотреть сообщение
вы используете стандарт 98 года(проверил)
Они обратно совместимы, если мне не изменяет память. Какая версия boost стоит?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 13:09  [ТС]     shared_ptr и vector #7
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Какая версия boost стоит?
1_39 из Borland 2010 (в этом проблемма ?)
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
27.07.2013, 13:27     shared_ptr и vector #8
Цитата Сообщение от Van111 Посмотреть сообщение
в этом проблемма ?
Я считаю, что да. Обнови версию(лишним не будет) и посмотри что получится.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
27.07.2013, 13:46     shared_ptr и vector #9
Проблема возникает по двум причинам:
1) boost 1.39
2) С++11.

Если у класса есть move-конструктор или оператор присваивания, то конструктор копирования неявно удаляется. Именно это и происходит. Соответственно, если взять новый буст или убрать опцию -std=c++11, то будет работать.

PS Если уж используем 11 стандарт, почему бы не взять std::shared_ptr?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 14:01  [ТС]     shared_ptr и vector #10
Цитата Сообщение от 0x10 Посмотреть сообщение
PS Если уж используем 11 стандарт, почему бы не взять std::shared_ptr?
спасибо, выручил, от чего то я думал что это одно и тоже (просто расфасовано по разному) . Функционал у них похож?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2013, 14:03     shared_ptr и vector
Еще ссылки по теме:

Пишу велосипед (shared_ptr) - C++
При компилировании получаем целую кучу ошибок. Не могу понять где я ошибся( #include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;utility&gt; ...

Шаблонный класс shared_ptr - C++
Почему после того как я написал диструктор, программа начала в конце выдавать ошибку? И почему к функции operator*() можно обращаться из...

Определение и изменение shared_ptr - C++
Из книги не понял вот такую форму определения интеллектуального указателя. int *q = new int(); //shared_ptr&lt;int&gt; p(q); тут понятно,...

Как воспользоваться shared_ptr? - C++
Мне нужно вернуть shared_ptr из сией ф-ции Tovar* createTovar(string s,string s1) { return new Office(s,s1); } Как это...

преобразование *this в std::shared_ptr - C++
Доброго времени суток уважаемые форумчане. у меня назрел такой вопрос, пишу программу в которой используется паттерн визитор и хотелось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
27.07.2013, 14:03     shared_ptr и vector #11
Van111, одно и то же, только между собой они не особо совместимы - нужно использовать всегда что-то одно.
Yandex
Объявления
27.07.2013, 14:03     shared_ptr и vector
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru