Kurde, nie ogarniam.
kod pastebin
Generalnie mam dwa różne obiekty, które mają wspólne nazwy metod (interfejs) oraz ich różne implementacje. Chciałbym jednak moc mieć jakiś sposób, żeby np. w pętli while(1) zmieniać obiekt, dla którego wywołuję metodę w zależności od wyniku działania programu. To znaczy coś takiego (uwaga wklejam kod):

oa a;
ob b;
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mireczki, mam taki oto problem.
Na wyświetlaczu graficznym rysuje dużo znaczków, mają zachowywać się jak buttony. Działa to doskonale. Jednak w pętli głównej programu (uC) muszę użyć konstrukcji switch() case x: żeby zinterpretować co użytkownik wcisnął i jak na to zareagować. Niestety będzie tego bardzo dużo, mimo, że przyciski można podzielić na 3 grupy to jednak robi się nieprzyjemnie.
Jest jakaś konstrukcja, nie wiem, może callbacki czy co, co pozwoliłoby uniknąć wielkiej
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Analityk: jak buttony są numerowane w miarę po kolei bez zer, to możesz zrobić tablicę gdzie kluczem jest id buttona, a wartością wskaźnik na handlera, ewentualnie haszmapę
ale prawdopodobnie będzie to mniej wydajne niż to co kompilator wyczaruje ze switcha
  • Odpowiedz
@Analityk: możesz sobie stablicować takie callbacki i po numerze wywolac odpowiedni element tablicy. Skoro napisałeś o callbackach, można tez na inne sposoby, ciężko coś więcej powiedzieć nie znając całości programu. Wybór najlepszego rozwiązania raczej należałoby zostawić komus kto wie co chce uzyskać i jakim kosztem.
  • Odpowiedz
Z tego co pamiętam, pozycja jest słaba, ktoś zainteresowany tematem, polecam C++. Biblioteka standardowa. Podręcznik programisty, w której wielowątkowość omówiona jest na bardzo dobrym poziomie.
  • Odpowiedz
@Analityk:
Nic kazda wartość zainicjalizowana na stosie zostanie zniszczona przy wyjściu ze scopa.
Ty przekazujesz przez wartość więc kompilator przypisze do zmiennej w miejscu jej wywołania, lub utworzy tymczasową zmienną (tak zwaną rwartością).
Przekazywanie przez wartość jest bardzo bezpieczne i nic złego się niepowinno wydarzyć.
Przepełnienie stosu odnosi się tylko do rekurencji, a jak wiadomo żeby zrozumieć rekurencje trzeba zrozumieć rekurencje.
  • Odpowiedz
  • 0
@OstryKrulAlbanii podajesz string typu "19+43" jako jedyny argument. Znajdujesz pozycję znaku + za pomocą jakiejś funkcji z biblioteki string. Robisz sobie lokalnie jako zmienne substring1 gdzie za pomocą jakiejś innej funkcji bierzesz część stringa od początku do + i wtedy masz pierwszą liczbę jako string w zmiennej lokalnej - "19", wtedy to sobie już konwertujesz na inta, tak samo robisz z drugą liczbą i zwróć sumę dwóch intów
  • Odpowiedz
Piszę z trochę nietypową prośbą do ludzi spod tagu #programowanie
Chciałbym poprawić swoje umiejętności odnośnie pisania kodu. Nie pracuję jako programista, trochę się programowało, ale głównie na studiach, gdzie najważniejsze to było oddać program i zaliczyć.

Wpadłem na pomysł, że skoro najlepiej człowiek się uczy na przykładach to może ktoś zna i mógłby polecić jakieś projekty na githubie, których kod jest naprawdę dobrej jakości? Dobrej jakoś to taki, który trzyma się
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@erplus: nie nauczysz sie tego z czytania. Pracuje juz troche w Javie(5+ lat) i pisanie coraz lepszego kodu szlifujesz pracujac z lepszymi od ciebie. W moim odczuciu bardzo wazny jest code review, dyskusje z innymi i nauka spojrzenia szerzej na to co robisz. Co z tego ze np. nauczysz sie wzorcow skoro robiac samemu prawdopodobnie bedziesz ich zle uzywal bo nikt ci o tym nie powie. Nawet jesli ktos z
  • Odpowiedz
Mirki, jest jakiś ładny sposób żeby zainicjować tabicę char** w #cpp #cplusplus ?

Próbuję napisać parser argumentów z terminala i w testach muszę często i gęsto inicjować takie tablice. Najprostsze inicjowanie przez { } rzuca warniniem "//warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]" podczas kompilacji

Wklejam to, co udało mi się do tej pory ustalić :)
https://pastebin.pl/view/7fa83f4c
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@minescias: Nie używaj char jak piszesz w C++, tylko std::vector, chyba że masz jakieś bardzo ważne powody na operowanie pamięcią ręcznie alokowaną. char używa się w C. Ja operuję w obu językach i staram się dobierać "the right tool for the right task"...
  • Odpowiedz
@UrbanLegend: Kursy same w sobie są różne, niektóre spoko a niektóre na poziomie niższym niż te z YT. Ta "okazyjna" cena jest dostępna praktycznie codziennie. Możesz to sprawdzić http://web.archive.org/web//https://www.udemy.com w większości przypadków masz "big sale -99%!!!". IMHO jedyne kursy na Udemy które są coś warte to te opisujące jakiś konkretny projekt(lub kilka) i jego napisanie, teoretyczne aspekty to sobie można w dokumentacji znaleźć.
  • Odpowiedz
@konik_polanowy: Jakiś czas temu popełniłem podobny wpis na mirko ( ͡° ͜ʖ ͡°)
Warto dodać jeszcze to, że u nas w pięknym kraju na wspaniałych uczelniach często uczą do tego jakiejś dziwnej hybrydy C i C++.
@bobikufel: Java/Python?
  • Odpowiedz
@Danieru: Zgodnie z obrazkiem w temacie, który podlinkowałeś:
glvalue to ogólnie coś co ma adres
rvalute to ogólnie coś co można przesuwać(dzięki move semantics, mam nadzieję, że wiesz o co chodzi)
lvalue to coś co ma adres ale nie można tego przesuwać
xvalue to taki mix czyli ma adres i można przesuwać
prvalue nie ma adresu ale można przesuwać
  • Odpowiedz
@Danieru: jeśli chodzi o move semantic to warto znać rys historyczny: pierwotnie C++ wszystko się kopiowało, dopiero póżniej wprowadzoni move semantic. Z tego powodu wygląda to tak pokracznie: żeby zachować stare działania, czyli kopiowanie, a jednocześnie dodać możliwość przenoszenia wprowadzono rvalue reference. Warto zainteresować się rustem, żeby zobaczyć jak to powinno działać: dostępne jest tylko przenoszenie, kopiowanie to po prostu przenoszenie sklonowanej wartości.
  • Odpowiedz
Jaki język lepszy do bawienia się rejestrami/procesami windowsa? Już mnie irytuje fakt, że node.js w intellij nie chce się zrekompilować co 3-4 razy i muszę manualnie szukać i wyłączać proces. Chciałbym napisać jakiś program który ( i dodał do startu) - na określoną kombinację klawiszy zamykał ten proces. Później chciałbym dodać obserwowanie jednego rejestru i zmianę wartości jak ta wartość się zmieni. Myślę że C / C++ będzie najlepsze, racja? Jeśli tak
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Przegrywek123: C/C++ WinAPI. Aczkolwiek nie mam z tym dużego doświadczenia.

Na studiach robiliśmy tez to w asemblerze, ale to męczarnia. To samo można łatwiej i szybciej zrobić w czystym C.
  • Odpowiedz
Cześć, mam problem gdy próbuję użyć biblioteki SFML. Mam błąd LNK1104 nie można otworzyć pliku jpeg.lib. Stworzyłem początek programu który ma po prostu wyświetlić czarny ekran, wrzuciłem lib i include do folderu, wpisałem ścieżkę we właściwościach, zdefiniowałem przetwarzanie na statyczne i wpisałem dodatkowe zależności do danych wejściowych. Czym to może być spowodowane i jak to naprawić? #programowanie #visualstudio #sfml #cplusplus
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach