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

Smart pointer - C++

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

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

Smart pointer - C++

02.09.2015, 08:53. Просмотров 285. Ответов 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??

Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru