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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
#1

преобразование *this в std::shared_ptr - C++

12.11.2013, 23:32. Просмотров 520. Ответов 5
Метки нет (Все метки)

Доброго времени суток уважаемые форумчане.
у меня назрел такой вопрос, пишу программу в которой используется паттерн визитор и хотелось бы использовать умные указатели, но вот как передать в метод visit *this так и не понял, не судите строго=)
вот примерный код того что есть(это только малая часть.)
C++
1
2
3
4
void CCircle::Accept( IGeometryObjectSerializerVisitor const&  visitor,std::ofstream & strm ) const 
{
    visitor.Visit(*this , strm); 
}
C++
1
2
3
4
5
6
7
8
9
void CGeometryObjectToJSONSerializerVisitor::Visit( CCircle const& circle,std::ofstream & strm )
{//final
    strm << "   {\n     type: \"circle\",\n     " ;
 
    CPoint2D* pt = circle.GetCenter();
    WritePointInfo("center", pt, strm);
 
    strm << ",\n        radius: " << circle.GetRadius() << "\n  }" << std::endl;
}
заранее благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 23:32     преобразование *this в std::shared_ptr
Посмотрите здесь:

Shared_ptr не является членом std - C++
Перевожу проект с VS10 в VS12, ругается на typedef std::shared_ptr&lt;gSkWalker_c&gt; mpSkWalker; 26 IntelliSense: expected a ';' Если...

Std::shared_ptr - область применения - C++
Назрел вопрос по содержанию объектов в коллекциях: каким образом в них хранить объекты? Записывать туда сами объекты или же хранить ссылки?...

Std::shared_ptr release pointer? - C++
Можно ли как-то у std::shared_ptr ( именно std:: ) отнять указатель, дабы он более не имел над ним власти? Вариант передавать &quot;пустой&quot;...

Значение deleter в std::tr1::shared_ptr - C++
Пишу для себя реализацию умного указателя. Взял за основу класс std::tr1::shared_ptr, но мне не все в нем понятно. Наткнулся на такой...

std::list - преобразование типов в контейнере - C++
Здравствуйте. Суть проблемы попробую передать в коде class A { }; class B : public A { public: B (int) {/*...*/}...

Shared_ptr - C++
Всем хай. Есть некий класс и в нём такой метод: class Base { public: std::shared_ptr&lt;Base&gt; get_ptr() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
12.11.2013, 23:35     преобразование *this в std::shared_ptr #2
Pokemon_93, сделать метод Visit константным как минимум (т.к. visitor - ссылка на константу, то неконстантные методы вызывать нельзя).
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.11.2013, 23:36     преобразование *this в std::shared_ptr #3
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
хотелось бы использовать умные указатели, но вот как передать в метод visit *this так и не понял,
в визитера передать смарт-поинтер? std::enable_shared_from_this
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
12.11.2013, 23:44  [ТС]     преобразование *this в std::shared_ptr #4
Цитата Сообщение от gray_fox Посмотреть сообщение
Pokemon_93, сделать метод Visit константным как минимум (т.к. visitor - ссылка на константу, то неконстантные методы вызывать нельзя).
большое спасибо, на данном этапе проблема вроде решена.

Добавлено через 58 секунд
Цитата Сообщение от Jupiter Посмотреть сообщение
в визитера передать смарт-поинтер? std::enable_shared_from_this
про enable_shared_from_this читал, но к сожалению так и не понял как им пользоваться.=(
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
12.11.2013, 23:47     преобразование *this в std::shared_ptr #5
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
про enable_shared_from_this читал, но к сожалению так и не понял как им пользоваться.=(
Просто наследоваться от него.

Добавлено через 1 минуту
По ссылке Jupiter есть код с примером.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 00:25     преобразование *this в std::shared_ptr
Еще ссылки по теме:

shared_ptr и vector - C++
почему в vector нельзя засунуть shared_ptr ? ...

This для shared_ptr - C++
Как создать объект shared_ptr, в котором будет лежать this?

Наследование от shared_ptr - C++
Добрый день. Подскажите вот какую вещь. Сделал удобный для себя класс для ведения логов. В нем переопределил operator&lt;&lt; след....

Реализация shared_ptr - C++
Добрый день. Реализовал shared_ptr(), но если больше 2 перемен он не правильно работает. Что я не правильно делаю и как правильно ...

Weak_ptr и shared_ptr - C++
Спасибо что зашли в эту тему и уделили мне время. Недавно увидел статью (не реклама) http://habrahabr.ru/post/191018/ Есть такой...

shared_ptr валится - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; #include &quot;boost/shared_ptr.hpp&quot; class One { public: ...


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

Или воспользуйтесь поиском по форуму:
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 00:25  [ТС]     преобразование *this в std::shared_ptr #6
Цитата Сообщение от gray_fox Посмотреть сообщение
Просто наследоваться от него.

Добавлено через 1 минуту
По ссылке Jupiter есть код с примером.
всем большое спасибо, вроде разобрался, проект компилится но на тестах вылетает ошибка, но это уже другая история=)
Yandex
Объявления
13.11.2013, 00:25     преобразование *this в std::shared_ptr
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru