Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Писал одну программку и получилась примерно такая схема
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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 &lt;boost/log/trivial.hpp&gt; int main(int,...

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

4
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2013, 17:10
Помогаю со студенческими работами здесь

Метапрограммирование в boost::proto (boost::spirit)
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt;...

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

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

Закрытый конструктор
Изучаю основы языка по книге основы c# Владимира Биллига. При описании создания констант...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru