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

Shared_str реализация - На выходе из деструктора падает программа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как получить указатель на функцию http://www.cyberforum.ru/cpp-beginners/thread1241733.html
Здравствуйте! Подскажите, как получить указатель на функцию? Амперсанд не помогает. class Menu{ private: // Создал указатель на функцию, вроде, верно. void(*m_PrintStyle) (const int&, vector<string>);
C++ Шифрование файлов и папок с установкой на них пароля Привет. Мне нужно зашифровать файл/папку и поставить пароль на нее/него. Что посоветуете? Заранее спасибо. P.S. так как шифрование тема сложная, подумываю о XOR. Вопрос: как лучше хранить пароль, и как зашифровать всю папку, чтобы в итоге вышел один файл? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread1241732.html
Оцените тетрис C++
Написано коряво, но это первый блин. Мне бы очень хотелось его дошлифовать до красивого внешнего и внутреннего содержания. Если участники форума мне в этом помогут, буду признателен. Test_Wi32.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "Test_Wi32.h" #define MAX_LOADSTRING 100 // Global Variables:
Проверить, имеют ли три введенных пользователем числа одинаковую четность C++
Проверить, имеют ли три введенных пользователем числа одинаковую четность #include<iostream.h> main() { int b,d,x; cout<<"enter b "; cin>>b; cout<<"enter d ";
C++ Разобрать строку кода http://www.cyberforum.ru/cpp-beginners/thread1241641.html
Часть программы, если что // Game engine struct Piece { struct { unsigned short s; } shape; int x : 8, y : 8, color : 14; unsigned r : 2; template<typename T> // walkthrough operator
C++ Нахождение ближайших точек методом декомпозиции - не понятен алгоритм Преподаватель задал решить задачу по нахождению ближайших точек методом декомпозиции, но мне не понятен алгоритм, гугл не дал мне необходимой информации, объясните пожалуйста. подробнее

Показать сообщение отдельно
DrOffset
6416 / 3790 / 876
Регистрация: 30.01.2014
Сообщений: 6,575
14.08.2014, 19:20     Shared_str реализация - На выходе из деструктора падает программа
MishaMoix, Если интересно, вот тебе небольшой пример:
Кликните здесь для просмотра всего текста
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
 
template <typename T>
class storage
{
public:
    explicit storage(T * p)
        : counter_(0), data_(p)
    { }
    ~storage()
    {
        delete data_;
    }
    void inc_ref()
    {
        ++counter_;
    }
    void dec_ref()
    {
        if(--counter_ == 0)
        {
            delete this;
        }
    }
 
private:
    storage & operator=(storage const &);
    storage(storage const &);
 
    size_t counter_;
    T *    data_;
};
 
namespace my
{
 
template <typename T>
class shared_ptr
{
public:
    shared_ptr()
        : st_(0)
    { }
 
    shared_ptr(T * p)
        : st_(0)
    {
        if(p != 0)
        {
            st_ = new(std::nothrow) storage<T>(p);
            if(st_ != 0)
            {
                st_->inc_ref();
            }
            else
            {
                delete p;
                throw std::bad_alloc();
            }
        }
    }
    shared_ptr(shared_ptr const & x)
        : st_(x.st_)
    {
        if(st_ != 0)
        {
            st_->inc_ref();
        }
    }
 
    ~shared_ptr()
    {
        if(st_ != 0)
        {
            st_->dec_ref();
        }
    }
 
    shared_ptr & operator=(shared_ptr const & x)
    {
        shared_ptr(x).swap(*this);
        return *this;
    }
 
    shared_ptr & operator=(T * x)
    {
        shared_ptr(x).swap(*this);
        return *this;
    }
 
    void swap(shared_ptr & x)
    {
        storage<T> * tmp = st_;
        st_ = x.st_;
        x.st_ = tmp;
    }
 
private:
    storage<T> * st_;
};
 
}
 
class Object
{
public:
    Object()  { std::cout << "Object()\n";  }
    ~Object() { std::cout << "~Object()\n";}
};
 
 
int main()
{
    my::shared_ptr<Object> a(new Object());
    my::shared_ptr<Object> b = a;
    my::shared_ptr<Object> c;
    c = b;
}

http://codepad.org/fXiO0PHo
 
Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru