Programisci wykopu potrzebuje rady :) niby proste ale nie potrafie tego ogarnac z gory zaznaczam ze zaczynam w programowaniu objektowym C++ wiec prosze o wyrozumialosc :) Pisze klase i chcialbym aby liczyla ile jest aktualnie objektow stworzonych oraz nadawala Id objektowi. Stworzylem zmienne static int counter oraz Id. Nie potrafie im nadac wartosci tzn chcialbym zeby counter globalnie byl 0 a w konstruktorze bede go zwiekszal a w destruktorze zmiejszal podobnie z Id jednak nie moge zainicjowac static int a wlasnie takiej zmiennej potrzebuje co mozecie mi doradzic jak to rozwiazac ?( ͡°͜ʖ͡°) #naukaprogramowania #progamowanie #cpp #pomoc
@Valut-tech: a może precyzyjniej? Co znaczy "nie mogę"? Niewidzialna ściana blokuje ci dostęp do komputera? Kod i błąd, prawdopodobnie to banał ale co źle robisz nie wywrozymy.
@Valut-tech: to inicjalizuj poza klasą czy jakąkolwiek funkcją. O ile pamiętam (mogę się mylić, uprzedzam) byłoby coś takiego: static int przyklad::counter=0; Najlepiej poszukaj w Google, to dość podstawowe zagadnienie i jest wiele tematów o tym. Kolega wyżej też chyba wrzucił pasujący link.
@Valut-tech: już niepamiętam ale w "Project build options" => "compiler settings" => "compiler flags" powinna być opcja do wybrania, jak nie to w "other options" wpisz -std=c++11 jak kompilator się będzie pluć to znaczy że masz za stary, uaktualnij.
@Valut-tech: BTW jak korzystasz z Codeblocksa to najlepiej z NightBuilds http://forums.codeblocks.org/?board=20.0 Po prostu uruchamiaj od najnowszego a jak natrafisz na buga to spróbuj kolejnego, jeżeli korzystasz z Mingw to też mieć lepiej wersję z G++ co najmniej 5.x
@Valut-tech: Ustawisz, ponieważ przy każdym stworzeniu jakiegoś obiektu będzie miał on id równe aktualnej wartości licznika, po czym ją zwiększy o jeden, tak, że następny stworzony obiekt będzie miał id o 1 większe :)
@Valut-tech: To wtedy zamiast: int przyklad::counter = 0; Piszesz: int przyklad::counter = 100; I pierwszy stworzony w programie obiekt tej klasy będzie miał id 100, drugi będzie miał id 101, kolejny 102 itd.
Dobra, w sumie tak jak masz też może być. Masz wtedy dwa oddzielne liczniki i jeden może być do tworzenia unikalnego ID, a drugi do aktualnej liczby obiektów w programie. Zapewne też o to Ci chodziło :)
#naukaprogramowania #progamowanie #cpp #pomoc
class przykad{
private:
static int counter=0;
static int Id=1;
int
static int przyklad::counter=0;
Najlepiej poszukaj w Google, to dość podstawowe zagadnienie i jest wiele tematów o tym. Kolega wyżej też chyba wrzucił pasujący link.
int przyklad::counter = 0;
int przyklad::Id=1001;
Pomogło takie rozwiazanie :) Dziekuje Panowie :)
przyklad : id(counter) {++counter};
tyldach``` albo na zewnętrznej stronie np http://melpon.org/wandbox albo coliru.stacked-crooked.com/-std=c++11jak kompilator się będzie pluć to znaczy że masz za stary, uaktualnij.int przyklad::counter = 0;
Piszesz:
int przyklad::counter = 100;
I pierwszy stworzony w programie obiekt tej klasy będzie miał id 100, drugi będzie miał id 101, kolejny 102 itd.
Dobra, w sumie tak jak masz też może być. Masz wtedy dwa oddzielne liczniki i jeden może być do tworzenia unikalnego ID, a drugi do aktualnej liczby obiektów w programie. Zapewne też o to Ci chodziło :)