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

Почему не дает shared_ptr от this? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Friend функции, определенные в теле класса http://www.cyberforum.ru/cpp/thread1370987.html
Всем привет! Непонятна логика, которой руководствуются компиляторы. Рассмотрим код: #include <iostream> struct A{ friend A* foo(A* ptr){ std::cout<<"ok";return ptr;}};
C++ Отправка е-мейла Хочу написать программу которая отправляет е-мейл(ввод е-мейла отправителя и ввод е-мейла получателя вводится в коде программы), прикрепив картинку. Причем часть пути картинки может быть не известна и известно только часть имени изображения(формат так же не известен). Если можно , с комментариями (чуть -чуть) http://www.cyberforum.ru/cpp/thread1370460.html
C++ Список функций из стандартных dll библиотек (lib.exe MVS)
В общем нужен список функций (желательно и хедеров, в которых они находятся) исходя из имени стандартной библиотеки dll. Наткнулся в инете что это мне может дать lib.exe, который входит в состав Micosoft Visual Studio. Начал читать, и что то ни фига не понял как её хоть запустить... Lib.exe нашёл, сама она по себе не запускается.(пишет мол нету библиотеки mspdb80.dll) Кто может подсказать что...
Ошибка в шаблоне функции C++
Доброго времени суток. У меня проблема с функцией для чтения таблицы из файла, которая спокойно работает с типами int и float, но не хочет работать как шаблон функции. template <typename A> A**readMatrix(int a, int b, string fileName){ A**matrix = new A*; for(int i=0;i< a;i++) matrix=new A; ifstream read; read.open(fileName); for(int i=0;i< a;i++){ for(int...
C++ Декомпиляторы С++ кода http://www.cyberforum.ru/cpp/thread1369195.html
Декомпиляторы С++ кода Доброго вечера!! Перечислите поджалуста, назовите. Ссылки, это, крайне приветствую! Очень хочу поиграть с такими игрушками. А если можно, выкладывайте сюда!
C++ NetBeansIDE8 не находит команду make всем привет! возникла проблема установил NetBeansIDE8 создаю проект и при выполнении не находит команду маке... помогите кто может - кто может помогите... скриншот прилагаю ) подробнее

Показать сообщение отдельно
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245

Почему не дает shared_ptr от this? - C++

09.02.2015, 15:13. Просмотров 612. Ответов 5
Метки (Все метки)

Здравствуйте.
Вот проблемный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
OwnProject::OwnProject(OwnManager * Manager, const QString & Filename)
    : manager(/*Manager->get_shared_ptr()*/ shared_ptr<OwnManager>(Manager)),
      filename(Filename)
{
    qDebug() << "[dbg]\t\tCalling c-tor for OwnProject (2nd)";
    nameOfProject =
            QFileInfo(filename).completeBaseName();
    file =
            make_shared<OwnProjectFile> (this, filename);
    rootNode =
            make_shared<OwnProjectNode> (this, file);
 
    Core::DocumentManager::addDocument(file.get(), false); //or true? or even - are we need this?
 
}
Если компилирую с закомментированным вариантом, а не тем, что далее "shared_ptr<OwnManager>(Manager)", то генерируется исключение:
terminate called after throwing an instance of 'std::bad_weak_ptr'
what() : bad_weak_ptr

OwnProject наследует std::enable_shared_from_this<OwnProject>, а get_shared_ptr это:
C++
1
2
3
4
5
6
std::shared_ptr<OwnProject> OwnProject::get_shared_ptr()
{
    qDebug() << "[dbg]\t\tGetting shared_ptr from this of OwnProject instance";
    return shared_from_this();
}
/*mem
Помогите, пожалуйста, ведь, это - "shared_ptr<OwnManager>(Manager)" - костыль?

P.S. Да, вызов в другом месте кода:
C++
1
return /*nullptr*/ new OwnProject(get_shared_ptr(), Filename);
другого конструктора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
OwnProject::OwnProject(shared_ptr<Internal::OwnManager> Manager, const QString & Filename)
    : manager(Manager),
      filename(Filename)
{
    qDebug() << "[dbg]\t\tCalling c-tor for OwnProject (1st)";
    nameOfProject =
            QFileInfo(filename).completeBaseName();
    file =
            make_shared<OwnProjectFile> (this, filename);
    rootNode =
            make_shared<OwnProjectNode> (this, file);
 
    Core::DocumentManager::addDocument(file.get(), false); //or true? or even - are we need this?
    
}
приводит к тому самому.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru