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

shared_ptr и vector - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
27.07.2013, 12:48     shared_ptr и vector #1
почему в 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++
VisualStudio C++ vector<vector<int> > push_back() C++
Работа со столбцами в vector< vector<int> > C++
shared_ptr с потомками C++
shared_ptr валится C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.07.2013, 12:48     shared_ptr и vector #2
Код?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 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
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
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,585
Записей в блоге: 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
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
27.07.2013, 13:05     shared_ptr и vector #6
Цитата Сообщение от Van111 Посмотреть сообщение
вы используете стандарт 98 года(проверил)
Они обратно совместимы, если мне не изменяет память. Какая версия boost стоит?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
27.07.2013, 13:09  [ТС]     shared_ptr и vector #7
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Какая версия boost стоит?
1_39 из Borland 2010 (в этом проблемма ?)
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
27.07.2013, 13:27     shared_ptr и vector #8
Цитата Сообщение от Van111 Посмотреть сообщение
в этом проблемма ?
Я считаю, что да. Обнови версию(лишним не будет) и посмотри что получится.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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,585
Записей в блоге: 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
Еще ссылки по теме:

C++ Не работает функция sort (vector, vector)
C++ Shared_ptr
Weak_ptr и shared_ptr C++

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

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

Текущее время: 10:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru