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

Массив указателей средствами ООП - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определение методов set/get в *.h http://www.cyberforum.ru/cpp-beginners/thread842428.html
Методы доступа занимают 1-2 строчки. Можно-ли их определять сразу в *.h, или там можно только объявлять, а определять обязательно нужно в *.cpp? int getVariable() { return variable; }
C++ Операции с рандомом В общем ситуация такая, нужно написать в консоле "Шар судьбы", возникла проблема с определением рандомного ответа. Не пойму как его осуществить. Подумывал о том, чтобы переменные класса string обозначить как ответы, а в следующей переменной стринг их добавить и прикрепить к рандому переменную, чтобы из нее генерировал какой-либо ответ, но не пойму как это осуществить и возможно ли. Если есть идеи... http://www.cyberforum.ru/cpp-beginners/thread842411.html
C++ Создать процедуру, которая принимает в качестве аргумента число N и выводит числа из диапазона от -N до N
Воспользуйтесь рекуррентным соотношением: Вывести(-N…N) = Вывести(N), Вывести(N-1…N-1), Вывести(N).
Ранжирование проектов методом парных сравнений C++
Добрый день, уважаемые форумчане! Столкнулся с такой проблемой. В общем, вот само задание: Компании требуются кадры в новый отдел. Чтобы грамотнее выбрать будущих работников директор приглашает группу экспертов из 5-ти человек, которые оценивают ниже перечисленные варианты: Z1 - переманить лучших сотрудников конкурентов; Z2 - отправить сотрудников других отделов на курсы повышения...
C++ функция http://www.cyberforum.ru/cpp-beginners/thread842399.html
функцию которая проверяет аргумент на нечетность. Аргумент функции величина типа int, результат true, если аргумент нечетный, false – если четный. Вот я пробовал её написать , но почему-то она работает не так. Подскажите в чём проблема bool odd (int i, bool k) {if ((i/2)==1) {k=true;} else k=false; return k; }
C++ Как получить доступ к массиву из другого класса? Подскажите, есть такой код: switch(o_field.fieldArray) { // Код } Этот код находится в классе А, а массив fieldArray определен в классе В. Для индексов массива я могу получить доступ через геттеры, а вот само имя массива подчеркивает красным, пишет, что B::fieldArray недоступно. Как получить к нему доступ? подробнее

Показать сообщение отдельно
romanzmushko
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 18
19.04.2013, 14:52  [ТС]     Массив указателей средствами ООП
я пытался так сделать, но у меня наверное лыжы не едут))
там наследуемые классы, 4 штуки, в каждом вывод на косноль, и в функции записи в массив используются они, тоесть, насколько понимаю идет запись в массив с дочерним классом, и вывод на экран так же с их использованием, вот я не знаю как обойти эти два места, хотя бы понять как считать в массив записей без дочерних классов

Добавлено через 24 минуты
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
// Чтение из файла информацию в массив
void mass::vRead(void)
{
 char cFile[50];
 char str[100];
 FILE *f;
 
 cout << "Введите имя файла, откуда будет считана информация:";
 cin >> cFile;
 // открываем файл
 if ((f=fopen(cFile,"rb"))==NULL)
  {
   cout << "Невозможно открыть файл для чтения информации\n";
   cout << "Нажмите Enter";
   fflush(stdin);
   gets(cFile);
   return;
  }
 while (fgets(str,100,f)!=NULL)
   vAdd(str);    // добавляем в массив элемент
 fclose(f);
 cout << "Информация считана\n";
 cout << "Нажмите Enter";
 fflush(stdin);
 gets(cFile);
 return;
}
 
 
// Добавление элемента в базу данных
void mass::vAdd(char *str)
{
 char tmp[100];
 int i,g,tip,k;
 float sr,at;
 char fam[50];
 
 if (strlen(str)>0)   // Если есть строка
  {
   i=0;k=0;
   while (*(str+i)!=';'&&*(str+i)!='\0')
    fam[k++]=str[i++];
   fam[k]='\0';i++;
 
   k=0;
   while (*(str+i)!=';'&&*(str+i)!='\0')
    tmp[k++]=str[i++];
   tmp[k]='\0';i++;
   g=atoi(tmp);
 
   k=0;
   while (*(str+i)!=';'&&*(str+i)!='\0')
    tmp[k++]=str[i++];
   tmp[k]='\0';i++;
   sr=atof(tmp);
 
   k=0;
   while (*(str+i)!=';'&&*(str+i)!='\0')
    tmp[k++]=str[i++];
   tmp[k]='\0';i++;
   tip=atoi(tmp);
 
   k=0;
   while (*(str+i)!=';'&&*(str+i)!='\0'&&*(str+i)!='\r')
    tmp[k++]=str[i++];
   tmp[k]='\0';
 
   mas[n].type=tip;
 
   switch (tip)
    {
     case 1:mas[n].el=(class cel *) new cel(fam,g,sr,tmp);
        break;
     case 2:at=atof(tmp);
        mas[n].el=(class ob *) new ob(fam,g,sr,at);
        break;
     case 3:mas[n].el=(class vne *) new vne(fam,g,sr,tmp);
        break;
     case 4:at=atof(tmp);
        mas[n].el=(class bez *) new bez(fam,g,sr,at);
        break;
 
       }
    n++;
  }
}
вот в vAdd, если я закомментирую switch, то оно мне ругается на g и sr
 
Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru