Форум программистов, компьютерный форум 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; } подробнее

Показать сообщение отдельно
DrOffset
6419 / 3793 / 877
Регистрация: 30.01.2014
Сообщений: 6,581
02.09.2015, 09:34     Smart pointer
Цитата Сообщение от Воротислав Посмотреть сообщение
Как Qt дружит с std::shared_ptr?
Если ты будешь указывать родителя в конструкторе создаваемого объекта, то этот родитель при своем уничтожении будет пытаться уничтожить также и свои дочерние объекты. Если дочерний объект сидит в shared_ptr, то это уничтожение останется незамеченным для него. И он будет продолжать считать, что ссылается на валидный объект.
Т.е. ситуация эквивалентна такой:
C++
1
2
3
4
5
6
7
8
{
    MyClass * obj = new MyClass();
    std::shared_ptr<MyClass> objPtr(obj);
    delete obj;
    
    objPtr->foo(); // oops
 
} // ~std::shared_ptr<MyClass>() - oops
В связи с этим использовать можно, но осторожно. Следить на временем жизни родителя, чтобы оно не закончилось раньше, чем время жизни последней копии shared_ptr, либо не указывать родителя вовсе.

Добавлено через 2 минуты
Цитата Сообщение от Воротислав Посмотреть сообщение
Возможно ли и здесь применить shared_ptr??
Конкретно в приведенном коде shared_ptr вообще-то избыточен. Достаточно сделать так:
C++
1
2
3
4
5
void MyWidget::on_buttonSettings_clicked()
{
   std::unique_ptr<DialogSettings> set(new DialogSettings(this));
   set->exec();
}
 
Текущее время: 15:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru