Wpis z mikrobloga

#programowanie #cpp #pytanie

Czy mogę tak przeładować w c++ jakiś operator żeby wynik działania działał na obydwa argumenty a nie dawał wyniku końcowego?
Przykładowo chciałbym mieć klasę MyClass z przeładowanym operatorem (np "||" ) w taki sposób że jak wykonuje działanie z tym operatorem na dwóch obiektach A i B tej klasy to zmienia mi się właściwość obiektu A i obiektu B ale żadnego wyniku nie otrzymuje. Chodzi mi o to żebym za pomocą operatora łatwo wiązał obiekty w "łańcuchy" (1D) albo "siatki".(2D)
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PanCogito: Od Ciebie zależy jak przeciążysz operator, ale jedna z dobrych praktyk mówi że przeciążone operatory powinny być intuicyjne. możesz przeciążyć '||' np. tak:

struct MyClass{
int x;
void operator ||(MyClass& rhs){
this->x = rhs.x
  • Odpowiedz
@kuhar: @inflo: Troszkę mnie zaciemniło i myślałem że działania z operatorem zawsze musi coś zwracać ale widzę, że nie (jestem w trakcie nauki c++)
@user84328: Chcę przeciążyć operatory "|" "-" tzn:
A | B - będzie oznaczało że tworze połączenie pomiędzy obiektem A i B gdzie A jest na górze a B na dole
A - B - analogicznie tylko połączenie będzie lewo prawo.
Myślę że
  • Odpowiedz
@kuhar: @inflo: @user84328: Jeszcze skorzystam z sytuacji i pozwolę sobie zapytać was następującą rzecz
( ͡° ͜ʖ ͡°)
Chcę sobie napisać jakąś prostą grę 2D. Wizualnie będzie to jakaś plansza 2D składająca się z elementów.
Chciałbym całkowicie rozdzielić mechanikę gry od grafiki.
W mechanice gry będę miał obiekty który będą właśnie reprezentowały elementy na planszy 2d (elementy te oraz jakieś klasy zarządzające tymi elementami będą implementowały tylko logikę
  • Odpowiedz
@PanCogito: Functional reactive programming, observer pattern
Nie będę teraz tłumaczył tych haseł, bo zrobiłbym inaczej: najepierw przeliczał logikę, a odrysowywałbym wszystko, niezależnie od tego czy stan obiektu się zmienił czy nie.
  • Odpowiedz
@user84328: ale takie rozwiązanie chyba nie jest wydajne, jeżeli pomiędzy kolejnymi "krokami" gry zmienia się tylko parę elementów a tak czy siak grafika jest cała rysowana?
Rozumiem że w takich prostych gierkach nie ma to znaczenie ale czy ogólnie tak się robi?
  • Odpowiedz
@PanCogito: nie opłaca się liczyć na cpu który region ekranu się zmienił, bo gpu i tak nic nie robi.
Dla gpu to czy odrysujesz 1/4, czy 1/2 ekrany czy cały ekran nie praktycznie znaczenia. Po co grzać cpu jak gpu śpi?
Oczywiście biblioteka której używasz musi rysować przy użyciu gpu. Stary SDL na przykład rysował tylko i wyłącznie na cpu i tam faktycznie mogło opłacać się sprawdzać co się zmieniło.
  • Odpowiedz
@user84328: ok, to wiele wyjaśnia. No faktycznie jakoś nie pomyślałem że przecież od rysowania jest karta graficzna. W takim wypadku temat znacznie się upraszcza (mam zamiar korzystać właśnie z SDL 2.0).
Dzięki za pomoc!
  • Odpowiedz