• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak w klasie nadawać ID po kolei?

0 głosów
211 wizyt
pytanie zadane 14 maja 2020 w C i C++ przez ullortnaci Nowicjusz (220 p.)
Witam, mam w klasie pole ID typu int i chcę aby każda następny utworzony obiekt miał ID o 1 większe, czyli: 1, 2, 3, 4... Jak to można zrobić?
komentarz 14 maja 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

chcę aby każda następna utworzona klasa miała

Nie miałeś na myśli następnego utworzonego obiektu?

komentarz 14 maja 2020 przez ullortnaci Nowicjusz (220 p.)
tak, pomyłka
komentarz 14 maja 2020 przez tkz Nałogowiec (42,040 p.)
Jest to kompletnie bezsensu. Psujesz najważniejsze zasady programowania obiektowego. Stwórz mapę, albo wektor par, cokolwiek, byle nie ingerować w klasę w taki sposób.

1 odpowiedź

+1 głos
odpowiedź 14 maja 2020 przez Piotr Batko Stary wyjadacz (13,210 p.)
edycja 14 maja 2020 przez Piotr Batko

Możesz dorobić statycznego inta first_free_id = 0, a następnie używać go i inkrementować w konstruktorze kolejnych obiektów. Zwróć uwagę na konstruktor kopiujący i operator przypisania, bo domyślne prawdopodobnie nie będą działać tak jak byś tego chciał.

struct ObjectWithId
{
  static int first_free_id;
  int id;

  ObjectWithId():
    id(first_free_id++)
  {
  }
};

int ObjectWithId::first_free_id = 0;

 

Podobne pytania

0 głosów
1 odpowiedź 392 wizyt
pytanie zadane 13 października 2016 w C i C++ przez alchem Obywatel (1,210 p.)
0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 17 marca 2018 w Inne języki przez marcin99b Szeryf (85,270 p.)
0 głosów
1 odpowiedź 1,097 wizyt
pytanie zadane 28 kwietnia 2021 w C i C++ przez Marak123 Stary wyjadacz (11,190 p.)

93,604 zapytań

142,526 odpowiedzi

322,993 komentarzy

63,087 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...