Bonjour à tous,
Actuellement sur un petit développement Qt, je suis contraint de me plonger dans les pointeurs intelligents.
Et bien qu'ayant parcouru beaucoup de posts sur le sujet, je ne trouve pas d'explications qui me conviennent.
J'aurais donc besoin de quelques réponses à ce sujet.
Mais avant voici le contexte :
- J'utilise une bibliothèque de lecture de carte RFID
- Quelques lignes pour vous "expliquer" un peu comment fonctionne la chose :
Donc - un readerConfig qui "contient" un ReaderProvider et un ReaderUnit (définit en fonction du dit ReaderProvider)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 std::shared_ptr<logicalaccess::ReaderConfiguration> readerConfig(new logicalaccess::ReaderConfiguration()); readerConfig->setReaderProvider(logicalaccess::LibraryManager::getInstance()->getReaderProvider("PCSC")); const logicalaccess::ReaderList readerList = readerConfig->getReaderProvider()->getReaderList(); readerConfig->setReaderUnit(readerList.at(2)); std::shared_ptr<logicalaccess::Chip> chip = readerConfig->getReaderUnit()->getSingleChip();
- et une carte
Je me pose les questions suivantes :
--> Si je souhaite stocker mon ReaderConfig et ma carte dans une classe, dois-je le stocker sous le type logicalaccess::ReaderConfiguration ou std::shared_ptr<logicalaccess::ReaderConfiguration> ?
--> Si je souhaite l'utiliser dans une autre classe que celle où je l'ai définit, il me faudra d'abord créer une instance de la classe et utiliser un getter de cette classe
Si "MonNouveauReaderConfig" est un shared_ptr, je ne peut pas simplement lui retourner mon premier shared_ptr. Comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Reader *reader = new Reader; "MonNouveauReaderConfig" = reader->getCurrentReaderConfig();
J'ai pris conaissance de la fonction make_shared mais je peine à comprendre comment l'utiliser...
--> Si j'assigne un ReaderUnit à mon premier shared_ptr de cette façon :
Est-ce que "MonNouveauReaderConfig" de mon autre classe possèdera également ce ReaderUnit que je viens de lui assigner ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 readerConfig->setReaderUnit(blablabla);
Pourquoi l'utilisation d'un new pour déclarer readerConfig alors que la carte est définit grâce à une fonction contenu dans la classe ReaderConfig ? Cela fait-il une différence car lors de mes expérimentations sur make_shared, j'ai pu simplement l'appliquer sur readerConfig, mais pas sur chip.
Voilà voilà.... ça fait beaucoup de questions mais elles sont assez basiques je pense. J'ai seulement du mal à comprendre les shared_ptr dans leur globalité et leur utilisation dans des classes étant nouveau pour moi, ça n'arrange pas les choses.
Merci d'avance à tout ceux qui sauront m'apporter des réponses, ou même une simple piste![]()
Partager