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

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

Восстановить пароль Регистрация
 
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
11.08.2012, 23:48     "Порядковый номер" для каждого экземпляра класса? #1
Добрый вечер!
Кто знает 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++ Структура ORDER с полями "номер счета плательщика", "номер счета получателя" и "сумма платежа"
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" C++
C++ Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии
C++ Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
C++ Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6173 / 2902 / 284
Регистрация: 04.12.2011
Сообщений: 7,726
Записей в блоге: 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
1477 / 1053 / 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     "Порядковый номер" для каждого экземпляра класса?
Ответ Создать тему
Опции темы

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