Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czy trzymać sf::RectangleShape w pamięci oraz inteligentne wskaźniki

Ostatnio zmodyfikowano dzisiaj: 9h » 17 min
Autor Wiadomość
skovv
» 2025-10-28 20:31:58
Nie rozumiem, daj przykład
P-183324
skovv
» 2025-10-28 20:31:59
Nie rozumiem, daj przykład
P-183325
tBane
Temat założony przez niniejszego użytkownika
» 2025-10-28 21:51:02
Kiedy stosować i kiedy nie stosować?
int * a


i jeszcze potrzebuję przerobić poniższą metodę na wskaźnik inteligentny, bo potrzebuję, by gdzie indziej zdefiniowany rect był przypisany do scrollbara - ma służyć za pole do scrollowania (gdzie może być kursor by scrolling kółka działał)
C/C++
class Scrollbar
    : ElementGUI
{
public:
   
   
sf::IntRect _rect;
   
sf::IntRect _slider;
   
   
// ...
   
   
sf::IntRect * _scrollArea;
   
int _deltaScroll;
   
float _scrollStep;
   
   
// other functions ...
   
};

void Scrollbar::setScrollArea( sf::IntRect & rect, float scrollStep ) {
   
_scrollArea = & rect;
   
_scrollStep = scrollStep;
}
P-183329
skovv
» 2025-10-28 22:08:28
No stosujesz ogółem kiedy potrzebujesz :D Ja np wskaźników używam gdy mam np inspektor który ma w sobie całe UI itp a wyświetlać ma dane wybranego obiektu. Obiekty w inspektorze się zmieniają, sama jego budowa itp nie także jeśli to obiekt ma się zmieniać to najlepiej użyć wtedy wskaźnika. Jeśli miałbym stały obiekt to najlepiej użyć normalnego obiektu.
P-183330
tBane
Temat założony przez niniejszego użytkownika
» 2025-10-28 22:09:29
Ale wcześniej pekfos pisał by używać inteligentnych wskaźników.
P-183331
pekfos
» 2025-10-28 22:14:15
Skoro surowe wskaźniki istnieją to musi być jakiś powód. Tak więc kiedy stosować surowe wskaźniki?
Wskaźniki inteligentne są zaimplementowane z użyciem surowych. Wystarczy?

To że używasz inteligentnych, nie znaczy że masz nie używać zwykłych. Są sytuacje gdzie nawet musisz. Przykładowo masz std::unique_ptr<sf::Text> w swoich obiektach, ale chcesz je wszystkie wyświetlić pętlą. Na potrzeby wyświetlania zbierasz te wskaźniki w kontenerze std::vector<sf::Text*>. Tu musi być zwykły wskaźnik, bo nie możesz skopiować unique ptr (to by zaprzeczało jego unikalności). I chociaż jest to odniesienie do obiektu zarządzanego przez inteligentny wskaźnik, ten kontener jest utworzony tylko na potrzeby działania algorytmu wyświetlania i jest kasowany zaraz potem. W tym czasie żaden z tych obiektów nie będzie zwolniony, co jest wymagane dla poprawności. A po co miałbyś chcieć tworzyć kontener specjalnie po to? Na przykład by posortować napisy wcześniej by wyświetlały się spójnie w sytuacji gdy na siebie nachodzą.
P-183332
tBane
Temat założony przez niniejszego użytkownika
» 2025-10-28 22:18:47
Mhm...
Czyli stosować inteligentne wskaźniki do pojedynczych obiektów, a do zbiorów stosować surowe?
P-183333
pekfos
» 2025-10-28 22:23:32
Podałem przykład. Jeżeli wyciągnąłeś z tego ogólną regułę, to nic nie zrozumiałeś.
P-183334
1 2 3 « 4 » 5
Poprzednia strona Strona 4 z 5 Następna strona