ПрограммированиеФорумОбщее

как лучше присваивать уникальный id?

Страницы: 1 2 Следующая »
#0
16:42, 30 июля 2009

Подскажите, как лучше всего сделать генерацию уникального id для объектов сцены игры? Первое что приходит на ум: static int, но не будет ли исчерпано количество таких id при долгой работе игры? А может есть способы лучше?

#1
16:48, 30 июля 2009

Force_Majeure
static long int

#2
16:53, 30 июля 2009

Force_Majeure
      Вполне себе нормальный способ. Ведь номера же нужны вполне для конкретных объектов - персонажей, статиков, динамиков.. и всего-такого ( в том смысле, что не будет же номеров у всяких там частиц и пуль ).. Т.е. их количество либо вообще уже известно при старте уровня, либо растет довольно медленно ( ну там персы спауниться могут )...
      Так что ничего не должно переполниться.

#3
16:57, 30 июля 2009

Если тебе понадобится ежесекундно создавать новый ID, то при использовании int он переполнится уже через 63 года непрерывной работы. Так что делай сразу long, а то твоих внуков разыщут и отомстят.

#4
17:03, 30 июля 2009

Went
MNAndrew
Megabyte-Ceercop
Спасибо!
> Если тебе понадобится ежесекундно создавать новый ID, то при использовании int
> он переполнится уже через 63 года непрерывной работы
Ясно :)
Значит буду прстой static int использовать

#5
18:14, 30 июля 2009

может все же unsigned int? или тебе отрицательные id тоже нужны?

#6
19:29, 30 июля 2009

Взял из одного коммерческого проекта:

int getID()
{
   return 4;
}
#7
19:41, 30 июля 2009

Aneroun
> может все же unsigned int
ну да, unsigned имелся ввиду

Facepalm
не понял, всегда же будет возвращаться 4

#8
19:43, 30 июля 2009

Вопрос в продолжение
Пытаюсь делать так:

class a
{
 public:
  a(void) {
   id0++;
   id = id0;
  }
  static int id0;
  int id;
}
int a::id0 = 0;

class b : public a
{

}

a ex1; // ex1.id равен 1
b ex2; // ex2.id равен 0 ?? почему так и как сделать чтобы был равен 2 ?
#9
20:13, 30 июля 2009

Force_Majeure

Взорвал мозг)
я даже проверил. нормально все. в первом 1, во втором 2.

Правка:
Подебаж да посмотри где что меняется, елки палки

#10
20:33, 30 июля 2009

MATov
У меня у самого уже мозг сварился. Вроде все элементарно,а ... :(
Правильно работает вроде вот так (подсказали на др. форуме)

class a
{
 public:
  a(void) {
   id0++;
   id = id0;
  }
  static int id0;
  int id;
}
int a::id0 = 0;

class b : public a
{
 b(void):a(); // Хотя я с таким раньше не сталкивался, думал это только для конструкторов с параметрами
}
#11
21:08, 30 июля 2009

Зачем что-то генерировать?
Бери адрес обьекта в памяти за ИД.

#12
21:12, 30 июля 2009

Pokimon
а потом нам на секундочку захотелос чтото сериализовать или сыграть посети или ещё какое непотребство)

#13
21:15, 30 июля 2009

kas

Полагаю, что для разных непотребств не стоит генерить ID в рантайме.

#14
21:27, 30 июля 2009

Ghost2
> Полагаю, что для разных непотребств не стоит генерить ID в рантайме.

В рантайме можно и ID и случайные числа генерировать. Главное чтоб алгоритм был строго детерминированый.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.