Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

11.08.2012, 23:48. Просмотров 741. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2012, 23:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Порядковый номер" для каждого экземпляра класса? (C++):

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

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

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

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

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

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

4
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,711
Записей в блоге: 5
11.08.2012, 23:56 #2
Ammandus, а если сделать поле int number (обычное нестатическое) и в конструкторе:
C++
1
2
3
4
foo() // inkremintirovanie pri sozdanii ob'ekta
      { 
number=count;
count++; }
2
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;
}
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 01:11 #4
не забывайте про конструктор копирования, который генерится по дефолту и в котором такого подсчета нет. нужно и его переписать.
1
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
12.08.2012, 20:42  [ТС] #5
можете подсказать как переписать конструктор копирования?
0
12.08.2012, 20:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2012, 20:42
Привет! Вот еще темы с ответами:

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

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

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

Перегрузка "opеrator =" и "{ }" для собственного класса - C++
Я пытаюсь создать класс Vector. Для задания элементов вектора хотелось бы использовать &quot;opеrator =&quot; и &quot; { } &quot;. Возможно ли...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.