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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как получить указатель на функцию http://www.cyberforum.ru/cpp-beginners/thread1241733.html
Здравствуйте! Подскажите, как получить указатель на функцию? Амперсанд не помогает. class Menu{ private: // Создал указатель на функцию, вроде, верно. void(*m_PrintStyle)...
C++ Шифрование файлов и папок с установкой на них пароля Привет. Мне нужно зашифровать файл/папку и поставить пароль на нее/него. Что посоветуете? Заранее спасибо. P.S. так как шифрование тема сложная, подумываю о XOR. Вопрос: как лучше хранить пароль,... http://www.cyberforum.ru/cpp-beginners/thread1241732.html
Оцените тетрис C++
Написано коряво, но это первый блин. Мне бы очень хотелось его дошлифовать до красивого внешнего и внутреннего содержания. Если участники форума мне в этом помогут, буду признателен. Test_Wi32.cpp...
Проверить, имеют ли три введенных пользователем числа одинаковую четность 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> //...
C++ Нахождение ближайших точек методом декомпозиции - не понятен алгоритм Преподаватель задал решить задачу по нахождению ближайших точек методом декомпозиции, но мне не понятен алгоритм, гугл не дал мне необходимой информации, объясните пожалуйста. подробнее

Показать сообщение отдельно
MishaMoix
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 99
14.08.2014, 16:31  [ТС]
Главная

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "shared_std.h"
#include <iostream>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    shared_ptrMy a(new Object());
    shared_ptrMy b;
        b = a;
        
    return 0;
}
h shared_std

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "Storage.h"
#include <iostream>
 
class shared_ptrMy
{
private:
    Storage *st;
 
 
public:
    shared_ptrMy(){};
    shared_ptrMy(shared_ptrMy&);
    shared_ptrMy(Object*);
    ~shared_ptrMy();
    shared_ptrMy& operator=(shared_ptrMy&);
};
cpp shared_std
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "shared_std.h"
 
shared_ptrMy::shared_ptrMy(Object *o){
    st = new Storage(o);
}
 
shared_ptrMy& shared_ptrMy::operator=(shared_ptrMy &o){
    st->Copy(o.st);
    st = o.st;
    return *this;
}
 
 
 
shared_ptrMy::~shared_ptrMy(){
        delete st;
}
 
shared_ptrMy::shared_ptrMy(shared_ptrMy &ptr){
    this->st->Copy(ptr.st);
    this->st = ptr.st;
}
Storage h (ну я решил не заморачиваться и сделал inline фн)
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
#include "Object.h"
#include <iostream>
 
class Storage
{
public:
    Storage(Object *o){
        pObj = o;
        counter = 1;
    }
    ~Storage(){
        
        std::cout << "destruct";
        --(this->counter);
 
        //bool j = (pObj == 0);
 
        if (this->counter == 0) 
            delete pObj;
    }
 
    Object& getObject(){
        return *pObj;
    }
 
    void Copy(Storage *s){
        ++(s->counter);
    }
 
 
    // private:
    Object *pObj;
    int counter;
};
Ну и собственно object h

C++
1
2
3
4
5
6
7
8
9
class Object
{
public:
    Object();
    ~Object();
private:
 
    int *arr;
};
object cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "Object.h"
 
Object::Object()
{
    arr = new int[10000];
    for (int i = 0; i<10000; ++i) arr[i] = i;
    int l = arr[70];
}
 
Object::~Object()
{
    delete[] arr;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru