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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Jleloush
1 / 1 / 1
Регистрация: 16.01.2010
Сообщений: 26
#1

номер объекта - C++

24.07.2011, 17:27. Просмотров 1379. Ответов 19
Метки нет (Все метки)

Недавно начал изучать классы , и возник такой вопрос:
Как создать класс с двумя полями, где одно поле хранит порядковый номер, а второе общее кол-во объектов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2011, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос номер объекта (C++):

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

Требуется ли при удалении объекта посредством delete указывать тип объекта? - C++
например, есть указателиvoid *p1; void *p2; есть VCL-объект TButton, есть самописный класс TMyClass; создаются объектыp1=new...

Как правильно вызывать функцию объекта из другой функции того же объекта? - C++
Доброго дня и ночи, уважаемые программисты! Существует некоторая проблема, на которую я наткнулся, решая задачу по программированию из...

При возврате объекта из функции пишет, что для объекта не определен констуктор копирования - C++
Пишу шаблонный класс матриц. Делаю, значит, переопределение оператора + для двух матриц одного типа. Но компилятор ругается на эту функцию ...

Вывод данных вложенного объекта из другого объекта - C++
Добрый День! Хочу в одном объекте вывести текст который находится во вложенном объекте. Помогите ,пожалуйста, понять в чем ошибка. ...

Создание объекта в функции и возврат объекта из нее - C++
Не могу разобраться с ссылками. Возможно ли вернуть из функции объект созданный в стеке при этом копи конструктор публичный. ...

19
Bers
Заблокирован
24.07.2011, 17:35 #2
Учитесь задавать вопросы корректно.

Вам нужно, что бы каждый вновь родившийся объект имел свой уникальный номер, и знал количество уже родившихся объектов?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.07.2011, 17:39 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
public:
  A(){++num; ++count;}
  ~A() {--count;}
private:
  static unsigned num;
  static unsigned count;
};
 
unsigned A::num = 0;
unsigned A::count = 0;
 
int main()
{
  A a;
}
0
Jleloush
1 / 1 / 1
Регистрация: 16.01.2010
Сообщений: 26
24.07.2011, 17:40  [ТС] #4
при выводе объекта писался его личный номер.
0
Bers
Заблокирован
24.07.2011, 17:43 #5
Алекс, порядковый номер для объекта уникален (или нафига вообще может быть нужен?)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A{
public:
  A() { ++count;  num=count; }
  ~A() {--count;}
private:
  unsigned int num;
  static unsigned int count;
};
 
unsigned A::count = 0;
 
int main()
{
  A a;
}
Конечно, здесь номера могут повторяться у разных объектов.

Но поскольку автор сам не в состоянии точно выразить, чего ему надо, сойдёт и так.

Умный сразу глянет в сторону статиков. Глупому расжовывать не хочется.
1
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
24.07.2011, 17:47 #6
alex_x_x, а как же

Цитата Сообщение от Jleloush Посмотреть сообщение
где одно поле хранит порядковый номер
?
Тогда уж так:
C++
1
2
3
4
5
6
7
8
9
class A{
public:
  A(){++count;num=count; }
  ~A() {--count;}
private:
  unsigned num;
  static unsigned count;
};
unsigned A::count = 0;
Добавлено через 35 секунд

Не по теме:

ну вот, опять...



Добавлено через 2 минуты
Цитата Сообщение от Jleloush Посмотреть сообщение
при выводе объекта писался его личный номер.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A{
public:
  A(){++count;num=count; }
  ~A() {--count;}
  friend std::ostream& operator<<(std::ostream& os, A ob){
           return os<<ob.num;
  }
private:
  unsigned num;
  static unsigned count;
};
unsigned A::count = 0;
 
int main()
{
  A a;
  std::cout<<a<<std::endl;
}
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.07.2011, 17:51 #7
Цитата Сообщение от Bers Посмотреть сообщение
num=count;
гениально, и при уничтожении объекта вскоре опять появится объект с таким же номером, или это уже какая-то другая уникальность?
0
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
24.07.2011, 17:52 #8
Kastaneda, а если мы удалим предпоследний элемент и создадим новый, то его номер совпадет с последним)

я бы организовал стек свободных номеров и к нему прикрутил бы счетчик элементов. вроде так будет элегантнее, хотя и вне класса объектов.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.07.2011, 17:52 #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
где одно поле хранит порядковый номер
это и будет порядковый номер в самом прямом смысле
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
24.07.2011, 17:58 #10
Цитата Сообщение от Paporotnik Посмотреть сообщение
Kastaneda, а если мы удалим предпоследний элемент и создадим новый, то его номер совпадет с последним)
Ну да, тут не подумал)

Цитата Сообщение от alex_x_x Посмотреть сообщение
это и будет порядковый номер в самом прямом смысле
Да, но если мы имеем 10 объектов, и второй захочет получить свой порядковый номер, то он получит 10, а не 2.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.07.2011, 17:59 #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
Да, но если мы имеем 10 объектов, и второй захочет получить свой порядковый номер
я не понимаю такого языка О_о
пример пожалуйста
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
24.07.2011, 18:05 #12
Цитата Сообщение от alex_x_x Посмотреть сообщение
пример пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A{
public:
  A(){++num; ++count;}
  ~A() {--count;}
  unsigned get_num(){return num;}
private:
  static unsigned num;
  static unsigned count;
};
 
unsigned A::num = 0;
unsigned A::count = 0;
 
int main()
{
  A arr[10];
  for(int i=0;i<10;i++)
      std::cout<<"Hello, i am arr["<<i<<"], my number is: "<<arr[i].get_num()<<std::endl;
}
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.07.2011, 18:07 #13
alex_x_x, а зачем делать порядковый номер static, ведь он же уникальный для каждого обьекта...
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.07.2011, 18:08 #14
а бже, ну да, нужно отдельную переменную заводить

Добавлено через 33 секунды
Net_Wanderer, чтобы выбирать следующий
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,207
24.07.2011, 18:12 #15
Цитата Сообщение от Jleloush Посмотреть сообщение
где одно поле хранит порядковый номер, а второе общее кол-во объектов.
Я не понял на хрена это нужно
но по моему это обыкновенный динамический массив
0
24.07.2011, 18:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 18:12
Привет! Вот еще темы с ответами:

Дан номер года, определить соответствующий ему номер столетия - C++
Дан номер некоторого года(целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20...

При выводе массива выводить номер строки и номер столбца - C++
Помогите реализовать вывод номера строки и столбца массива, у меня рандом пропадает, когда я пытался реализовать вывод номера строки или...

Выяснить номер квартала и номер полугодия по введенному номеру месяца - C++
Вводится число k - номер месяца. Выяснить номер квартала и номер полугодия по введенному номеру месяца. Предвидеть ситуацию неправильного...

Найти номер строки и номер столбца матрицы, в которых находятся максимальный элемент - C++
задание 4 Задан двухмерный массив чисел. Элементы матрицы вводятся с клавиатуры. найти номер строки и номер столбца, в которых...


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

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

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