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

перегрузка - C++

Восстановить пароль Регистрация
 
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 202
20.02.2014, 20:12     перегрузка #1
Вот моя перегрузка
C++
1
2
3
4
5
6
7
8
9
10
11
Disc* FCollectionDisc :: operator [] (char* l)
{
  for (int i=0; i<getcount(); i++)
  {
    if (strcmp(getitem(i)->getnamedisc(),l)==0)
    {
      return getitem(i);
    }
  }
  return NULL;
}
FcollectionDisc (это коллекция, в ней лежат объекты базового класса Disc) и FcollectionDisc наследник Collection, методы оттуда.

C++
1
2
3
FcollectionDisc f1;
//тут я добавил некоторое кол-во объектов
f1["Taxi"]->putobject(); // вот если в коллекции Taxi нету то прога критует.
Критует потому что putobject()-это вывод объекта, нечего выводить. Подскажите какую проверку написать, чтобы не вылетало или если такого объекта нету, то дальше не вызывало putobject();

Добавлено через 1 минуту
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
#include <string.h>
#include <stdio.h>
#include "Collection.h"
 
 
Collection :: Collection (Collection *x)
{
 
    col = x->col;
    items = new Disc *[col];
    for (int i = 0; i < col; i++)
    {
     items[i]=new Disc(*x->items[i]);
     // items[i]=x->items[i];
  //      items[i]=new Disc;
   //     items[i]->sethours(x->items[i]->gethours());
  //      items[i]->setnamedisc(x->items[i]->getnamedisc());
    }
}
 
 
Collection::Collection()
{
  col=0;
  items=new Disc*[10];
}
 
Collection::~Collection()
{
  for (int i=0; i<col; i++)
   {
      delete items[i];
    }
  delete [] items;
}
 
void Collection::additem(Disc *x)
{
    items[col] = x;
    col++;
}
 
void Collection::delitem(int a)
{
  delete items[a];
   for (int i=a; i<col-1; i++)
   {
    items[i]=items[i+1];
   }
  col--;
}
 
int Collection::getcount()
{
  return col;
}
 
Disc * Collection::getitem(int num)
{
    return items[num];
}
 
void Collection::putitems()
{
  for(int i = 0; i < col; i++)
   {
     items[i]->putobject();
   }
 
}
 
void Collection :: swap (int r1, int r2)
{
 Disc* g=items[r1];
 items[r1]=items[r2];
 items[r2]=g;
}
Добавлено через 21 секунду
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
#include <string.h>
#include <stdio.h>
#include "disc.h"
 
void Disc :: setnamedisc(char *s)
{
  strcpy(namedisc,s);
}
 
char* Disc :: getnamedisc()
{
  return namedisc;
}
 
void Disc :: sethours(int b)
{
  hours=b;
}
 
int Disc :: gethours()
{
  return hours;
}
 
void Disc :: getobject()
{
  fflush(stdin);
  printf("\nВведите название дисциплины -> ");
  gets(namedisc);
  printf("Введите кол-во часов -> ");
  scanf("%d",&hours);
}
 
void Disc :: putobject()
{
  printf("Название дисциплины: ");
  puts(namedisc);
  printf("Количество часов: %d\n",hours);
}
 
Disc :: Disc()
{
  namedisc[0]=0;
  hours=0;
}
 
Disc :: Disc(char *s, int h)
{
  strcpy(namedisc,s);
  hours=h;
}
 
Disc :: Disc(Disc &x)
{
  strcpy(namedisc,x.namedisc);
  hours=x.hours;
}
 
Disc :: Disc(char *s)
{
  strcpy(namedisc,s);
  hours=0;
}
 
Disc& Disc :: operator +=(char *h)
{
 strcat(namedisc,h);
 
 return *this;
 
}
Добавлено через 7 минут
Ай, проблему решил
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2014, 20:12     перегрузка
Посмотрите здесь:

C++ C++ Перегрузка
C++ Перегрузка << и >>
Перегрузка в c++ C++
C++ перегрузка []
C++ Перегрузка +
Перегрузка () C++
перегрузка -- C++
C++ Перегрузка ++ и --

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru