0 / 0 / 1
Регистрация: 24.08.2011
Сообщений: 23
1

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

11.08.2012, 23:48. Показов 2746. Ответов 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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2012, 23:48
Ответы с готовыми решениями:

Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
В программе есть два класса, для каждого создано по одному экземпляру. Почему-то в месте создания...

Определить, есть ли в тексте буква "а" (и найти ее порядковый номер)
Дано предложение определить есть ли буква &quot;а&quot; в нем. Если такая буква есть то найти порядковый...

Структура ORDER с полями "номер счета плательщика", "номер счета получателя" и "сумма платежа"
написать структуру ORDER. с полями 1.номер счета плательщика 2.счета получателя 3.сумма платежа

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел
Вставить пробел после каждого символа &quot;.&quot; &quot;,&quot; &quot;!&quot; или &quot;?&quot;, если за этими символами не следует...

4
Комп_Оратор)
Эксперт по математике/физике
8730 / 4475 / 602
Регистрация: 04.12.2011
Сообщений: 13,366
Записей в блоге: 16
11.08.2012, 23:56 2
Ammandus, а если сделать поле int number (обычное нестатическое) и в конструкторе:
C++
1
2
3
4
foo() // inkremintirovanie pri sozdanii ob'ekta
      { 
number=count;
count++; }
2
0 / 0 / 1
Регистрация: 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;
}
0
DU
1497 / 1143 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 01:11 4
не забывайте про конструктор копирования, который генерится по дефолту и в котором такого подсчета нет. нужно и его переписать.
1
0 / 0 / 1
Регистрация: 24.08.2011
Сообщений: 23
12.08.2012, 20:42  [ТС] 5
можете подсказать как переписать конструктор копирования?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2012, 20:42
Помогаю со студенческими работами здесь

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после...

Для класса "Футболист" создать производный класс "Нападающий"
помогите плиз написать главную функцию и внешний метод и посмотрите ошибки класс ФУТБОЛИСТ с...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Паттерн "Итератор" для шаблонного класса "Словарь"
Препод дал задание сделать шаблонный словарь и реализовать для него иттератор. Сделал словарь, но...

Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье"
Добрый день необходимо написать несколько программ, кто может помогите. одна тема - одна...

Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье"
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru