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

Przypisanie surowego wskaźnika this do inteligentnego wskaźnika std::shared_ptr

Ostatnio zmodyfikowano 2025-10-31 16:45
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Przypisanie surowego wskaźnika this do inteligentnego wskaźnika std::shared_ptr
» 2025-10-31 16:22:17
Witam. Mam następującą funkcję i próbuję przypisać surowy wskaźnik - this do inteligentnego wskaźnika - std::shared_ptr.
Oraz próbuję porównać wskaźnik std::shared_ptr z surowym wskaźnikiem this.
Jak to zrobić?


C/C++
extern std::shared_ptr < ElementGUI > ElementGUI_pressed;

// ...

void NormalButton::handleEvent( const sf::Event & event ) {
   
if( _rect.contains( cursor->_worldMousePosition ) ) {
       
       
if( const auto * mbp = event.getIf < sf::Event::MouseButtonPressed >(); mbp && mbp->button == sf::Mouse::Button::Left ) {
           
ElementGUI_pressed = this; // error
       
}
       
else if( const auto * mbr = event.getIf < sf::Event::MouseButtonReleased >(); mbr && mbr->button == sf::Mouse::Button::Left ) {
           
if( ElementGUI_pressed == this ) {
               
// eror
               
click();
           
}
        }
       
    }
}
P-183346
tBane
Temat założony przez niniejszego użytkownika
» 2025-10-31 16:45:59
Znalazłem rozwiązanie :-)
C/C++
extern std::shared_ptr < ElementGUI > ElementGUI_pressed;

// ...

class NormalButton
    : InneKlasy
    , public std::enable_shared_from_this < NormalButton >
{
   
....
};



void NormalButton::handleEvent( const sf::Event & event ) {
   
if( _rect.contains( cursor->_worldMousePosition ) ) {
       
       
if( const auto * mbp = event.getIf < sf::Event::MouseButtonPressed >(); mbp && mbp->button == sf::Mouse::Button::Left ) {
           
ElementGUI_pressed = this->shared_from_this();
       
}
       
else if( const auto * mbr = event.getIf < sf::Event::MouseButtonReleased >(); mbr && mbr->button == sf::Mouse::Button::Left ) {
           
if( ElementGUI_pressed.get() == this ) {
               
click();
           
}
        }
       
    }
}
P-183347
« 1 »
  Strona 1 z 1