Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Большой_Стен
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
1

boost::make_shared и закрытый конструктор

14.04.2013, 14:47. Просмотров 1795. Ответов 4
Метки нет (Все метки)

Здравствуйте. Писал одну программку и получилась примерно такая схема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
     private:
     class B
     {
          friend class A;
          //сюда хочу придумать дружбу класса B и make_shared
          private:
          B (bool _var) {}        
     };
     public:
     void f () {boost::make_shared<B>(false);}
};
Собственно, если конструктор сделать открытым, а описание класса оставить в закрытой части, то всё работает. Пытался дописать что-то вроде friend boost::shared_ptr<Node> boost::make_shared<Node,bool> (bool&& var), но без толку. Что делать в подобных ситуациях? В программе я могу конечно сделать открытый конструктор, но здесь скорее спортивный интерес.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 14:47
Ответы с готовыми решениями:

Boost начало работы: Undefined reference to `boost::system::generic_category() '
Добрый день Собственно говоря возникла необходимость использовать boost в...

Boost Log - undefined reference to `boost::system::system_category()'
Пытаюсь скомпилировать код из примеров Boost Log:#include...

Использование boost и boost.build с несколькими компиляторами
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов:...

Метапрограммирование в boost::proto (boost::spirit)
В библиотеке boost:: proto есть такой код ...

Qt и boost boost::system::generic_category()
Добрый день Не подскажите как настроить Qt на работу с boost? У меня в...

4
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.04.2013, 15:45 2
в с++03 так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
     private:
     class B
     {
          friend class A;
          friend boost::shared_ptr<B> boost::make_shared<B, bool>(bool const&);
          private:
          B (bool) {}        
     };
     public:
     void f () {boost::make_shared<B, bool>(false);}
};
1
Большой_Стен
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 16:58  [ТС] 3
у меня С++11 и что-то не работает. Посмотрел через отладчик, что вызывается boost::make_shared с аргументами Arg1&& , Args&& . . . (явно новый стандарт).
0
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.04.2013, 17:05 4
в с++11 так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
     private:
     class B
     {
          friend class A;
          friend boost::shared_ptr<B> boost::make_shared<B>(bool&&, int&&);
          private:
          B (bool, int) {}        
     };
     public:
     void f () {boost::make_shared<B>(false, 5);}
};
но что-то это мне не нра...
1
Большой_Стен
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 17:10  [ТС] 5
Да, что-то уж совсем. Лучше конструктор открытым сделаю.
0
14.04.2013, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 17:10

boost::geometry::model::box и boost::geometry::area
Здравствуйте! Пытаюсь измерить площадь box'a :D, но не знаю как правильно это...

Можно ли создать глобальный обект, вызвав для него закрытый конструктор?
Можно ли создать глобальный объект, вызвав для него закрытый конструктор? Как?

Qt и boost
Как правильно прикрутить boost к Qt Creator? Можно ли использовать уже...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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