Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 0
Mam 2 klasy w jednej mam publiczna funkcje float.

Jak pobrac oryginal a nie kopie w innej klasie tej funkcji?

W klasie B mam:

Class a;
Float B::GetPosition ()
{
Return a.GetPosition();
}

Returnuje kopie a potrzebuje oryginal.

#cpp
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@copego: chyba musze bo klasa B jest pociskiem i musi pobierac caly czas pozycje gracza, jak robie kopia to sciaga mi tylko poczatkowa pozycje i jej potem nie zmienia. Dzieki
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Zendemion: nie wiem stary, to moja 1 gra ide z wiatrem :D Pocisk jest wystrzeliwany z gracza, wiec logicznym dla mnie bylo pobieranie pozycji z gracza.
  • Odpowiedz
@PatrixOK: no dobrze, ale po co Ci pozycja gracza PO wystrzeleniu? Pozycja pocisku już potem od tego nie zależy :D
W momencie tworzenia pocisku ustalasz jego pozycję na podstawie pozycji gracza który go wystrzelił i więcej Cię to nie powinno interesować. No chyba że wymyśliłeś jakąś śmieszną b--ń z której pociski skręcają na podstawie tego jak chodzisz ( ͡° ͜ʖ ͡°)
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Zendemion: chodzi o to ze a.GetPosition(); zwraca pozycje ktora zostala zainicjowana na poczatku, nie updatuje jej w ogole jak poruszam gracza.

Jak wyrzucam w cout pozycje z klasy A to pokazuje pozycje na zywo, a jak daje cout w klasie B z a.getPosition(); to stoi w miejscu na pozycji startowej.

To getPosition() w SFMLu
  • Odpowiedz
@PatrixOK: bo w klasie B trzymasz shallow copy klasy A. Tworząc pocisk tworzysz przy okazji dodatkowego gracza należącego do pocisku i nim nie ruszasz. Jego pozycja będzie stała. Poczytaj o shallow copy i deep copy bo ewidentnie tego teraz nie rozumiesz.

Żeby to zrozumieć użyj prostszych typów. Jeśli w klasie B zapiszesz jakiegoś inta, a potem będziesz zmieniał tego pierwotnego inta to wartość w instancji B się nie zaktualizuje
  • Odpowiedz