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

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

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

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

11.08.2012, 23:48. Просмотров 714. Ответов 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     "Порядковый номер" для каждого экземпляра класса?
Посмотрите здесь:

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

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

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

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

Реализация класса "Студент" и наследование от него класса "Аспирант" - C++
Помогите, пожалуйста! Создать абстрактный базовый класс Person, описывающий обычного человека. Создайте производный класс Student,...

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6442 / 3081 / 306
Регистрация: 04.12.2011
Сообщений: 8,485
Записей в блоге: 4
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
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 01:11     "Порядковый номер" для каждого экземпляра класса? #4
не забывайте про конструктор копирования, который генерится по дефолту и в котором такого подсчета нет. нужно и его переписать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2012, 20:42     "Порядковый номер" для каждого экземпляра класса?
Еще ссылки по теме:

Символьный массив: проверить, чтобы после каждого вхождения "1" шло парное вхождение "0" - C++
Доброго времени суток. Есть программа, которая реализует данную задачу: Проверить что б после каждого вхождения &quot;1&quot; шло парное...

Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии - C++
3.Написать программу, вводите фамилию, имя и отчество одной строкой. Определить длину каждого слова. Удалить все буквы &quot;а&quot; и &quot;о&quot; с фамилии....

Найти номер последней по порядку строки в матрице, содержащей наибольшее количество букв "ш", "щ" - C++
Нужен код к этому условию, пожалуйста. Дана символьная матрица размера 13х18. Найти номер последней по порядку строки,содержащей...

Ошибки "Expression syntax" и "Unreachable code" при реализации класса матриц - C++
Подскажите по коду. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; ...

Функции: для каждого числа последовательности найти количество цифр "5" - C++
Вводится последовательность из N целых чисел. Для каждого числа последовательности найти количество цифр 5 (функцией оформить определение...

Замена в строке каждого второго символа "!" на "$" - C++
Ребята, напишите пожалуйста программу. Я даже представления не имею какую функцию нужно использовать в задаче: &quot;Ввести с клавиатуры...


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

Или воспользуйтесь поиском по форуму:
Ammandus
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 23
12.08.2012, 20:42  [ТС]     "Порядковый номер" для каждого экземпляра класса? #5
можете подсказать как переписать конструктор копирования?
Yandex
Объявления
12.08.2012, 20:42     "Порядковый номер" для каждого экземпляра класса?
Ответ Создать тему
Опции темы

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