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

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

Войти
Регистрация
Восстановить пароль
 
Droll
0 / 0 / 0
Регистрация: 07.09.2012
Сообщений: 48
#1

shared_ptr в классе - C++

17.06.2013, 14:14. Просмотров 588. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Вопрос по использованию shared_ptr, который описан следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
template<class T> class auto_ptr{
    T* m_pointer;
    int* m_count;
public:
    // constructor
    auto_ptr(T* pointer=0):m_pointer(pointer){
        m_count = (pointer)?new int(1):0;
    }
    //dereferencing object
    T& operator* (){return *m_pointer;}
    //dereferencing pointer
    T* operator-> (){return m_pointer;}
    //copy constructor
    auto_ptr(const auto_ptr& ptr_cpy){
        m_pointer = ptr_cpy.m_pointer;
        m_count = ptr_cpy.m_count;
        *m_count+=1;
    }
    auto_ptr& operator=(const auto_ptr& ptr_cpy){
        this->~auto_ptr();
        m_pointer = ptr_cpy.m_pointer;
        m_count = ptr_cpy.m_count;
        *m_count+=1;
        return *this;
    }
    void reset(T* ptr_new){
        this->~auto_ptr();
        new (this) auto_ptr(ptr_new);
    }
    //destructor
    ~auto_ptr(){
        if(m_count)
        {
            *m_count-=1;
            if(*m_count==0)
            {
                delete m_pointer;
                delete m_count;
            }
        }
    }
 
};
вопрос следующий, мне нужно использовать это поинтер в классе string. ПОдскажите, пожалуйста, как правильно это реализовать. Я пытаюсь делать следующим образом, но не получается:
C++
1
2
3
4
5
6
class string{
auto_ptr<char*> m_ptr;
public:
string(char* cstr):m_ptr(cstr){}
const char* getText()const{return *(m_ptr);};
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 14:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос shared_ptr в классе (C++):

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

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

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

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

Allocator и shared_ptr - C++
Прокомментируйте пожалуйста. Есть ли смысл и вообще возможность оформлять зарезервированную память allocator-ом в shared_ptr? Или это...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2013, 14:14
Привет! Вот еще темы с ответами:

shared_ptr с потомками - C++
Добрый вечер, сейчас столкнулся с задачей хранить большие объемы динамически-выделенной памяти. Обычный массив Base* list не подходит, т.к....

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

Использование shared_ptr - C++
std::shared_ptr&lt;int&gt; sp(new int); sp = 12; std::cout &lt;&lt; sp; Расшареному указателю нельзя присваивать стандартные...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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