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

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать класс время с данными-членами часы, минуты, секунды http://www.cyberforum.ru/cpp-beginners/thread330022.html
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не успели пройти их... помогите пожалуйста решить Создать класс время с данными-членами часы, минуты, секунды. Перегрузить операторы сложения, вычитания(подсчет количества секунд между временем), ввода и вывода. Создать функции-члены сложения времени с заданным количеством секунд, вычитания из времени...
C++ Как послать своё сообщение другому приложению? #define WM_MYMESSAGE 2000 void main() { HWND hWnd; hWnd = ::FindWindow(NULL,"MyApp"); ::SendMessage(hWnd,WM_MYMESSAGE,0,0); } http://www.cyberforum.ru/cpp-beginners/thread330016.html
C++ Класс "Студент", реализовать динамический список "Группа студентов"
реализовать динамический список " группа студентов". Узел: -группа -фамилия Функции списка: -добавление по алфавиту -удаление указанного -очистка списка -поиск студента -печать списка
Чтение из файла, запись в файл C++
Тут такая у меня проблема. 1) Не работает цикл в майне. Как его правильно организовать? 2) И, похоже, чтение из файла все-таки, неправильно организовано. 3) И оошшшень хотелось бы поиск в файле как-нить организовать Кто может, помогите или подскажите, пожалуйста) #include<iostream> #include<fstream> #include<iomanip>
C++ двойная буферизация http://www.cyberforum.ru/cpp-beginners/thread329972.html
Здравствуйте. Ребят не сочтите за труд, помогите разобраться. Проблема собственно вот в чём: Пишу тетрис, в окошке находится стакан с фигурами, а на фоне нужно чтобы была некая картинка. Сначала всё сделал с выводом прямо на экран, но столкнулся с миганием окна. Теперь пробую через двойную буферизацию, но, после показа первого расположения падающей фигурки экран совсем не меняется.:wall: Вот...
C++ абстрактный тип данных надо написать на С++... разработать абстрактный тип данных :двусвязный циклический список. атд должен обеспечивать выполнение следующих операций: 1)добавление элемента в список 2)удаление элемента из списка 3)редактирование элемента в списке 4)просмотр нескольких списков 5)объединение нескольких списков 6)определение количества элементов в списке написать демонстрационную программу с... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
07.07.2011, 17:27  [ТС]     Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
Если всё понятно и не отвратительно, тогда добавлю сюда свою задачу. Всё работает и вопросов у меня не вызывает, на вашем месте я бы реализацию не смотрел.
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>
 
//Класс matrix чтобы решать задачи с матрицами; интерфейс
 
template <class T>
class matrix {
 public:
 
  //Кнструтор по умолчанию создаёт матрицу из 2-х строк и одного столбца; ничем не инициализирует
  matrix ();        
 
  //Конструктор просто создаёт матрицу, выделяет место под строи и столбцы, но не инициализирует их
  //В деструкторе, понятно, эта память освободится
  matrix (int x, int y);    
 
 
  //А это деструктор, освобождает на хер всю занятую память
  ~matrix ();        
 
  //Инициализация матрицы рандомно значениями от x до y влючительно
  //если значения типа double, то тоже будет всё нормально, после запятой будет два знака
  void init_rand (int x, int y); 
 
  //Это вот вывод матрицы
  void vivod ();
 
  //Возвращаает количество строк
  int get_kol_vo_strok () {return kol_vo_strok;};
  //... и количество столбцов
  int get_kol_vo_stolb () {return kol_vo_stolb;}
 
  //Преобразования типа, эта херь позволит перегрузить оператор [][]
  //Это я сам придумал не без подачи ребят
  operator T**() {return p;};
 
 
 private:
 
 //Количество строк, количество столбцов
  int kol_vo_strok;         
  int kol_vo_stolb;         
 
 
  //Динамический мссив из указателей на указатели на T
  T**p;
};
 
 
//Р Е А Л И З А Ц И Я
template <class T>
matrix<T>::matrix () {
 kol_vo_strok= 2; kol_vo_stolb= 1;
 p= new T* [kol_vo_strok];
 p[0]= new T;
 p[1]= new T;
};        
 
template <class T>
matrix<T>::matrix (int x, int y):kol_vo_strok(x), kol_vo_stolb(y) {
 p= new T* [x];
 for (int i= 0; i< x; i++) {
  p[i]= new T [y];
 }
};        
 
template <class T>
matrix<T>::~matrix () {
 for (int i= 0; i< kol_vo_strok; i++)
  delete [] p[i];
 delete [] p;
};        
 
template <class T>
void matrix<T>::init_rand (int x, int y) {
 srand (time(0));
 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);;
    }
   }
  }
 }
}
 
template <class T>
void matrix<T>::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");
 }
}
//К О Н Е Ц   Р Е А Л И З А Ц И И
 
 
 
 
int main () {
 
 matrix <int> k;
 
 matrix<int> y (6, 7);
 y.init_rand (1, 100);
 y.vivod();
 printf ("\n");  
 
 //Благодаря моей дури "operator T**() {return p;};" эта херь корректна:
 printf ("%d\n", y[3][4]);  
 y[3][4]= 99;
 
 y.vivod();
 printf ("kol_vo_strok=  %d\n",  y.get_kol_vo_strok());  
 printf ("kol_vo_stolb=  %d\n",  y.get_kol_vo_stolb());  
 
 getchar (); 
 
}
 
Текущее время: 02:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru