Getting reference to QSharedPointer from its object
-
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.
-
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"));