С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Smart pointer - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор MinGW в NetBeans не видит класс потока (thread) http://www.cyberforum.ru/cpp-beginners/thread1523349.html
Версия NetBeans - 8.0.2 компилятор - MinGW Суть проблемы в следующем - использую NetBeans для С++, компилятор MinGW. Начал изучать работу с потоками (код простой программы приведен ниже). Но...
C++ Как собственные типы (typedef) использовать в других модулях программы Привет всем. С++ изучаю только, поэтому спотыкаюсь частенько. Сейчас возникла следующая проблема. Суть такая.. Пишу модульную программу. В одном из моих модулей (Data) описаны переменные,... http://www.cyberforum.ru/cpp-beginners/thread1523344.html
Зашифровать четырехзначное число, не понимаю условие задачи C++
Всё глубже в ночь и голова всё хуже работает. Условие: (Зашифровать четырехзначное число, к примеру, 4213) "... заменять каждую цифру значением (сумма этой цифры плюс 7) по модулю 10." Что...
C++ For_each не меняет входной контейнер
здравствуйте есть код который нужно сделать с помощью std::for_each без c++11 и boost: std::list<UnicodeString> map; map.push_back("hello"); map.push_back("slowly"); map.push_back("world");...
C++ Friend функции не имеют доступ к закрытым переменным http://www.cyberforum.ru/cpp-beginners/thread1523296.html
Всем привет. Изучаю c++ по Липпману 5-ое издание. Там на стр. 351-352 используются friend функции для получения доступа к закрытым переменным. Выглядит все это так: #ifndef SALESDATA_H_INCLUDED...
C++ Возведение числа типа int в степень Здравствуйте. int n = 2; int x = 2; while (n) { n = x * n; cout << n << endl; } подробнее

Показать сообщение отдельно
Воротислав
124 / 102 / 27
Регистрация: 25.02.2010
Сообщений: 448

Smart pointer - C++

02.09.2015, 08:53. Просмотров 393. Ответов 6
Метки (Все метки)

Доброго времени суток.
Вопросы мои связаны с началом изучения умных указателей в C++ и применении в проектах.

Взял за начало обучения статью на хабре http://habrahabr.ru/post/140222/

1. В статье написано инициализация указателя
C++ (Qt)
1
2
3
int test() {
    std::shared_ptr<MyObject> p1(new MyObject);
}
То есть внутри функции. Я в проектах, в некоторых случаях использую:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
// MyClass.h
class MyClass
{
...
private:
    MyObject *obj;
}
 
// MyClass.cpp
MyClass::MyClass()
{
    obj = new MyObject();
}
И далее в тексте работаю с указателем на объект MyObject.
Вопрос в следующем, как мне в таком же стиле применить shared_ptr?
Правильно ли будет писать так:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
// MyClass.h
class MyClass
{
...
private:
    std::shared_ptr<MyObject> obj;
}
 
// MyClass.cpp
MyClass::MyClass()
{
    obj = std::shared_ptr<MyObject>(new MyObject());
}
2.
В одном из проектов необходимо использовать следующую конструкцию.
Есть класс Книга, в которой есть поля название, автор и прочее.
Есть класс Комната, в которой есть вектор, содержащий указатели на книги, находящиеся в данной комнате.
Есть управляющий класс Агент, который следит за передвижением книг.
Суть какая, при запуске Агент создает комнаты, и в дальнейшем создает книги. Затем он их должен положить в комнату. Правильно ли будет использовать в данном случае умные указатели (ибо я боюсь запутаться в указателях), и создав shard_ptr<Book> book1 (new Book ("Bukvar")); затем передать его в комнату. а при необходимости взять оттуда?

3. этот вопрос больше касается Qt, но не охото плодить темы, возможно здесь ответят.
Как Qt дружит с std::shared_ptr? Я например окошки создаю так:
C++ (Qt)
1
2
3
4
5
6
void MyWidget::on_buttonSettings_clicked()
{
   DialogSettings *set = new DialogSettings( this);
   set->exec();
   delete set;
}
Возможно ли и здесь применить shared_ptr??

Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.