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

Деструтор взял выходной. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Немогу понять как начать программу http://www.cyberforum.ru/cpp-beginners/thread298129.html
Многопоточное консольное приложение С++. Основной поток запускает X (1 < X <= 64) вспомогательных потоков. X – первый параметр командной строки. Каждый из вспомогательных потоков бесконечно (с некоторой изменяющейся задержкой) добавляет в некий общий контейнер свой элемент. При этом он удаляет самый старый элемент в случае, если тот был добавлен другим потоком или если количество элементов...
C++ dll создаю первую dll в ms vs 2008 #include "stdafx.h" #include "windows.h" #include "stdio.h" #include "incl.h" BOLL WINAPI DllMain(HINSTANCE hDll, dwReason, lpReserved) { switch(dwReason) http://www.cyberforum.ru/cpp-beginners/thread298127.html
C++ Сеттеры и геттеры в классах С++!
Сдравствуйте!Не могли бы вы мне обьяснить зачем нужны сеттеры и геттеры в классах с++ и как их использовать в основной функции!Заранее спасибо!(очень прошу объяснение попроще)
C++ С паскаля на С++
Всем добрый вечер!! Вот сама задача.....Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие выше побочной диагонали. Условный оператор не использовать. Const m = 6; Var a:array of integer; i,j:byte; Begin Randomize; For i:=1 to m do
C++ матрица: меняем местами последнюю строку и последный столбец http://www.cyberforum.ru/cpp-beginners/thread298110.html
что нужно сюда добавить или изменить, чтобы поменять местами последний столбец и последнюю строку #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <iomanip.h> void fill(int a, int n, int m) { int i,j; randomize(); for (i=0;i<n;i++)
C++ Перевести dataGridView1.Columns.ValueType = typeof(double); это на шарпе как переделать на С++ подробнее

Показать сообщение отдельно
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141

Деструтор взял выходной. - C++

17.05.2011, 21:35. Просмотров 403. Ответов 8
Метки (Все метки)

Уважаемые знатаки, доброго времени суток.
В процессе написания лабы захотелось одну функцию протестировать отделно от всего осталного.
Написав подобный класс, споивовав деструктор и необходимые для теста функции принялся за дебаг, после чего РАБОЧИЙ в исходном проэкте деструктор отказаля коректно выполняться, причем и в исходнике тоже.
Если не лень, научите уму разуму, ну пожлуйста...
вот собственно текст тестовой программы:
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
#include<iostream>
 
class abc{
int** mass;
int Msize;
public:
    abc(int M,int a,int b){
        Msize=M;
        mass=new int*[Msize];
        mass[0]=new int(a+1);mass[0][0]=a;
        mass[1]=new int(b+1);mass[1][0]=b;
        for(int i=0;i<Msize;i++){
            for(int ii=1;ii<=mass[i][0];ii++)mass[i][ii]=1;
        }
    }
    ~abc(){
        for(int i=0;i<Msize;i++){
        delete[] mass[i];
        }
        delete[] mass;
    }
    void del(int num=0){
        int i,ii;
        GetElem(num,i,ii);
        int j=i,jj=0;
        int* M=new int(mass[i][0]+1);
        for(;jj<=mass[i][0];jj++)M[jj]=mass[j][jj];
        for(int a=1;a<=M[0];a++) std::cout<<M[a];
        delete []mass[i];
        mass[i]=new int(M[0]);
        mass[i][0]=M[0]-1;
        jj=1;
        if(ii<=mass[i][0]){
            while(jj<ii){mass[i][jj]=M[jj];jj++;}
            while(jj<=mass[i][0]){mass[i][jj]=M[jj+1];jj++;}
        }
        else while(jj<=mass[i][0])mass[i][jj]=M[jj];
        delete []M;
    }
friend std::ostream &operator <<(std::ostream& I,abc& param){
        for(int i=0;i<param.Msize;i++){
            for(int ii=1;ii<=param.mass[i][0];ii++){
                /*if(i==param.Msize-1 && ii==param.mass[param.Msize-1][0]) std::cout<<param.mass[i][ii];
                else*/ std::cout<<param.mass[i][ii]/*<<","*/;
            }
            std::cout<<std::endl;
        }
        
        return I;
    }
private:
    void GetElem(int& num,int& i,int& ii){
        int point=0;
        for(i=0;i<Msize;i++){
            int size=mass[i][0];
            for(ii=1;ii<=size;ii++){
                point++;
                if(point==num)break;
            }
            if(point==num)break;
            if(i==Msize-1)i=0;
        }
    }
};
void main(){
    abc a(2,3,4);
    std::cout<<a;
    //a.del(5);
    std::cout<<a;
}
Добавлено через 7 минут
да, и если создавать и удалять точо такой же массив в main ни чего плохого не происходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru