Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Getting reference to QSharedPointer from its object
Forum Updated to NodeBB v4.3 + New Features

Getting reference to QSharedPointer from its object

Scheduled Pinned Locked Moved Solved General and Desktop
2 Posts 2 Posters 210 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Cocojambo
    wrote on last edited by
    #1
    class Player {
        public:
            QString ID;
            static inline QHash<QString, QSharedPointer<Player>> players;
    
            void save(QSharedPointer<Player>& player) {
                players.insert(player->ID, player);
            }
    };
    
    int main() {
        auto player = QSharedPointer<Player>(new Player);
        player->ID = "ID10";
        player->save(player);
    }
    

    Is it possible to get rid of passing reference to QSharedPointer object in save() method while saving a new object?
    And I wouldn't like to pass it via some method like player->bindPointer(player);
    Maybe some kind of auto player = QSharedPointer<Player>(new Player(player)); and then in constructor assign passed pointer. But I know that it won't work. Or in save() method I could call some magic method to get "parent" wrapper like:

    void save() {
        players.insert(player->ID, this->getPointer());
    }
    

    Just wonder if there is some trick to do it.

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by VRonin
      #2

      Maybe some kind of auto player = QSharedPointer<Player>(new Player(player)); and then in constructor assign passed pointer.

      I'm not sure I get what you mean.

      You can do:

      void save(const QString& id) {
      auto player = QSharedPointer<Player>::create();
      player->ID = id
      players.insert(id, player);
      }
      

      and then call save(QStringLiteral("ID10"));

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      2

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved