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

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ что не так?не выводит значения... http://www.cyberforum.ru/cpp-beginners/thread326366.html
#include <vcl.h> #include <math.h> #include <iostream.h> #include <stdlib.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused
C++ Вывод на монитор графики, не используя WinAPI Каким образом можно осуществлять работу с графикой и мультимедиа, не используя функции winapi? Не думаю, что это невозможно, ведь полно других ОС, кроме windows, использующих графику и визуализацию. Собственно всё сводится к обращению к портам монитора, к операциям ввода-вывода? Просто недавно меня поставили в тупик, сказав, что это невозможно, или это возможно, но только с использованием... http://www.cyberforum.ru/cpp-beginners/thread326360.html
виндовая форма C++
добрый вечер. прошу помощи в реализации. есть код. но мне его в форму сделать нужно.сам код: #include <iostream> //для консоли #include <string> #include <algorithm> #include <vector> #include <map> using namespace std; class Date {
C++ Предопределение типа данных С++
Доброго времени суток) Столкнулась с проблемой - нужно было код из книги,написанный на паскале, перекодить в с++.Даны две структуры,и в каждой элементы ссылаются друг на друга..в паскале,видимо,не играет роли,а вот в си.. struct item { int key; page* p; int count; };
C++ Очередь с приоритетом http://www.cyberforum.ru/cpp-beginners/thread326337.html
Всем привет . Собственно нужно организовать очередь с приоритетом. Задание: В офисе один принтер, на печать должны подоватся те документы которые выше по приоритету. Имеются такие дефайны. Код: #define FULL 10 //макс.размер очереди #define EMPTY 0 #define DIRECTOR 10 //приоритет директора
C++ Циклы - срочно Пишу в Borland C++. Ежемесячная стипендия студента составляет А р., а расходы на проживание превышают стипендию и составляют В р. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую единовременно надо попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию. подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.06.2011, 17:36  [ТС]     в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант!
Код сырой, можешь сразу посмотреть main
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
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <typeinfo>
#include <time.h>
 
template <class T>
class matrix {
 public:
 
  //Кнструтор по умолчанию создаёт матрицу из 2-х строк и одного столбца; ничем не инициализирует
  matrix () {srand (time(0));kol_vo_strok= 2; kol_vo_stolb= 1;};        
 
  //Конструктор просто создаёт матрицу, выделяет место под строи и столбцы, но не инициализирует их
  //В деструкторе, понятно, эта память освободится
  matrix (int x, int y):kol_vo_strok(x), kol_vo_stolb(y) {
   srand (time(0));
   p= new T* [x];
   for (int i= 0; i< x; i++) {
    p[i]= new T [y];
   }
  };        
 
 
  //А это деструктор, освобождает на хер всю занятую память
  ~matrix () {
   for (int i= 0; i< kol_vo_strok; i++)
    delete [] p[i];
    delete [] p;
   };        
 
  //Инициализация матрицы рандомно значениями от x до y влючительно
  //если значения типа double, то тоже будет всё нормально, после запятой будет два знака
  void init_rand (int x, int y) {
   double temp;
   for (int i= 0; i< get_kol_vo_strok(); i++) {
    for (int j = 0; j< get_kol_vo_stolb(); j++) {
     p[i][j]= rand()%(y- x+ 1)+ x;
     if (typeid(p[i][j])== typeid (temp)) {
      if (p[i][j]!= y) {
       p[i][j]+= (T)rand()/(RAND_MAX+1);;
      }
     }
    }
   }
  }
 
 
  //Это вот вывод матрицы
  void vivod () {
   double temp;
   for (int i= 0; i< get_kol_vo_strok(); i++) {
    for (int j = 0; j< get_kol_vo_stolb(); j++) {
     if (typeid(p[i][j])== typeid (temp))
      printf ("%.2f ", (double)p[i][j]);  
     else
      printf ("%3d ", p[i][j]);  
    }
    printf ("\n");
   }
  }
 
 
 
  //Устанавливает количество строк
  void set_kol_vo_strok (T x) {kol_vo_strok= x;};
  //... и количество столбцов
  void set_kol_vo_stolb (T x) {kol_vo_stolb= x;}
 
 
  //Возвращаает количество строк
  int get_kol_vo_strok () {return kol_vo_strok;};
  //... и количество столбцов
  int get_kol_vo_stolb () {return kol_vo_stolb;}
 
  
  //Перегрузка операторов
  //Это перегрузка оператора []; работает пока но этого мало, надо чтобы была перегрузка [][]  
 
  class nemo {
   public:
    T* k;   
    T& operator[](int nomer_stolbtsa) {
     return (k[nomer_stolbtsa]);
    };
  };
  
  //А вот из этой функции возвращается объект класса nemo. 
  //ПОка возвращается ссыль, но я буду переделывать, чтобы возвращался объект.
  nemo& operator[](int nomer_stroki) {
   nemo* ne= new nemo [1];
   ne->k= (T*)(p[nomer_stroki]); 
   return *ne;
  };
  
 
 
 
 private:
 
  //Количество строк, количество столбцов
  int kol_vo_strok;         
  int kol_vo_stolb;         
 
 
// public:
  //Динамический мссив из указателей на указатели на T
  T**p;
 
 
};
 
 
int main () {
 
 matrix<int> y (6, 7);
 y.init_rand (1, 100);
 y.vivod();
 printf ("\n");  
 
 //Благодаря моей дури, эта херь корректна:
 printf ("%d\n", y[3][4]);  
 y[3][4]= 99;
 
 y.vivod();
 printf ("\n");  
 
 getchar (); 
 
}
 
Текущее время: 18:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru