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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
#1

"Порядковый номер" для каждого экземпляра класса? - C++

11.08.2012, 23:48. Просмотров 685. Ответов 4
Метки нет (Все метки)

Добрый вечер!
Кто знает C++. Подскажите пожалуйста,
сейчас застрял на задаче, где нужно создать "порядковый номер"
для каждого создаваемого экземпляра класса. В коде который ниже
на экран действительно выведется информация, что
число объектов: 1, 2, 3, но в следующей задаче
где нужно будет сначала ввести информацию о трех кораблях,
а затем вывести все это на экран - три объекта будут уже
созданы, и выведется информация для всех трех кораблей, что
это корабль №3. Есть ли какое-либо другое решение для
прикрепления номера к каждому созданному экземпляру класса?

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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
char* Rus(const char* text);
///////////////////////////////////////////////
class foo
{
  private:
    static int count;
    int s;
  public:
    foo() // inkremintirovanie pri sozdanii ob'ekta
      { count++; }
    int getcount() // vozvrashaet znachenie count
 { return count; }
};
//---------------------------------------------
int foo::count = 0; // *opredelenie* count
///////////////////////////////////////////////
int main()
{
  foo f1; 
  cout << Rus("Число объектов: " ) << f1.getcount() << endl;
  foo f2;
  cout << Rus("Число объектов: " ) << f1.getcount() << endl;
  foo f3;
  cout << Rus("Число объектов: " ) << f1.getcount() << endl;
  return 0;
}
//--------------------------------------------------------------
// ф-ция русификации
char buf[256]; // за пределами функции
char* Rus(const char* text)
{
CharToOem(text, buf);
return buf;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2012, 23:48     "Порядковый номер" для каждого экземпляра класса?
Посмотрите здесь:

Замена в строке каждого второго символа "!" на "$" C++
Перегрузка операторов для класса "множество целых чисел" C++
C++ Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
Перегрузка "opеrator =" и "{ }" для собственного класса C++
Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
C++ Класс "Дроби" и перегрузка операторов для этого класса
C++ Реализация класса "Студент" и наследование от него класса "Аспирант"
Написать конструктор для пользовательского класса "Двусвязный список" C++
Функции: для каждого числа последовательности найти количество цифр "5" C++
Для каждого прочитанного числа напечатать строку, содержащую соответствующее число символов "*" C++
Определить, есть ли в тексте буква "а" (и найти ее порядковый номер) C++
C++ Паттерн "Итератор" для шаблонного класса "Словарь"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,029
Записей в блоге: 3
11.08.2012, 23:56     "Порядковый номер" для каждого экземпляра класса? #2
Ammandus, а если сделать поле int number (обычное нестатическое) и в конструкторе:
C++
1
2
3
4
foo() // inkremintirovanie pri sozdanii ob'ekta
      { 
number=count;
count++; }
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
12.08.2012, 00:29  [ТС]     "Порядковый номер" для каждого экземпляра класса? #3
Спасибо Вам IGPIGP! Ваш совет действительно помог. Ведь если не ставить static, то для каждого экземпляра будет создана отдельная переменная number! Все получилось! Вот мой вариант:

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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
 
char* Rus(const char* text);
///////////////////////////////////////////////
class foo
{
  private:
    static int count;// obshee pole dlya vseh ob'ektov
                       // (v smisle ob'yavleniya)
    int number;
  public:
    foo() // inkremintirovanie pri sozdanii ob'ekta
      {
          count++;
          number=count;
      }
    int getcount() // vozvrashaet znachenie count
      {
          return number;
      }
 
};
//---------------------------------------------
int foo::count = 0; // *opredelenie* count
///////////////////////////////////////////////
int main()
{
  foo f1,f2,f3;
 /* int n1=f1.getcount();
  foo f2;
  int n2=f2.getcount();*/
 
  cout << Rus("Число объектов: ") << f1.getcount() << endl;
  cout << Rus("Число объектов: ") << f2.getcount() << endl;
  cout << Rus("Число объектов: ") << f3.getcount() << endl;
 
  return 0;
}
//--------------------------------------------------------------
// ф-ция русификации
char buf[256]; // за пределами функции
char* Rus(const char* text)
{
 
CharToOem(text, buf);
return buf;
}
DU
1479 / 1055 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 01:11     "Порядковый номер" для каждого экземпляра класса? #4
не забывайте про конструктор копирования, который генерится по дефолту и в котором такого подсчета нет. нужно и его переписать.
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
12.08.2012, 20:42  [ТС]     "Порядковый номер" для каждого экземпляра класса? #5
можете подсказать как переписать конструктор копирования?
Yandex
Объявления
12.08.2012, 20:42     "Порядковый номер" для каждого экземпляра класса?
Ответ Создать тему
Опции темы

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