std :: unique_ptr est un pointeur intelligent qui conserve la propriété exclusive d'un objet via un pointeur. unique_ptr n'est ni copiable ni attribuable à la copie, deux instances de unique_ptr ne peuvent pas gérer le même objet.

unique-ptr...

J'y ai réfléchi récemment, et le seul argument que je peux voir pour avoir un opérateur d'égalité pour std :: unique_ptr est l'exhaustivité de sorte que tous les pointeurs intelligents de la bibliothèque de modèles standard l'ont. Mais à moins que vous n'ayez fait quelque chose de mal, je ne vois au....
C ++ 17 a ajouté [[nodiscard]]. C ++ 20 a ajouté l'utilisation des méthodes [[nodiscard]] sur empty, par exemple vector::empty() - peut-être, pour éviter la confusion de l'utilisateur avec la méthode clear (c'est-à-dire appeler empty () accidentellement pour effacer le vecteur). Pourquoi C....
5 mars 2020 à 01:05
J'ai une méthode qui renvoie un objet par valeur. La méthode provient d'une bibliothèque sur laquelle je n'ai aucun contrôle. Pour la manipulation ultérieure de l'objet, je souhaite continuer à travailler avec un unique_ptr sur cet objet. Voici un exemple: #include <iostream> #include <memory> clas....
2 mars 2020 à 13:33
J'ai un appel api qui remplit un tableau de pointeurs bruts à utiliser par l'appelant. Ce tas de fonctions alloue chaque pointeur brut mais n'alloue pas le tableau. Je ne peux pas modifier cette fonction d'API, quelle que soit sa gravité. L'appel du code de fonction api ressemble à ceci: size_t re....
21 nov. 2019 à 02:12
Je sais que std::unique_ptr est utilisé lorsqu'un objet n'a qu'un seul propriétaire et std::shared_ptr est utilisé lorsqu'un objet a plusieurs propriétaires. Que signifie être le propriétaire unique d'un objet? Le fait d'être le propriétaire unique signifie-t-il que personne d'autre ne peut voir l'o....
11 nov. 2019 à 17:32
J'ai fait référence à de nombreux liens StackOverflow sur ces questions où la raison pour laquelle auto_ptr ne fonctionne pas bien avec STL est std::auto_ptr<> ne remplit pas les conditions requises pour être constructible par copie et assignable (puisque auto_ptr a un faux constructeur de copie qui....
9 nov. 2019 à 06:49
Dans la fonction suivante (modifiée à partir d'un autre article Stackoverflow), j'essaie d'utiliser un unique_ptr pour que la mémoire allouée par le new soit libérée plus tard. Est-il sécuritaire de faire std::wstring(res.get()) ici? Autrement dit, res sera-t-il copié lorsque le constructeur de chaî....
4 nov. 2019 à 09:52
Après avoir compilé ce morceau de code, je reçois des messages d'erreur qui indiquent qu'il se produit une double suppression; ma question est ce qui ne va pas exactement avec ce code? Où le problème se produit-il? #include <iostream> #include <memory> class Manager; class Interface { protected: ....
4 nov. 2019 à 03:42
Je regarde la conférence de Chandler Carruth à la CppCon 2019: Il n'y a pas d'abstractions à coût nul Dans celui-ci, il donne l'exemple de la façon dont il a été surpris par combien de frais généraux vous encourez en utilisant un std::unique_ptr<int> sur un int*; ce segment commence environ au momen....
11 oct. 2019 à 13:19
Dans ce code: void f(std::unique_ptr<int> q) { } void g() { std::unique_ptr<int> p{new int{42}}; f(std::move(p)); } À quelle ligne p est-il désalloué? Je dirais à la sortie de la fonction f car elle a été déplacée là-bas en utilisant std :: move, mais je ne suis pas sûr ni sûr de cette rép....
J'ai écrit le code suivant qui utilise unique_ptr<Derived> où un unique_ptr<Base> est attendu class Base { int i; public: Base( int i ) : i(i) {} int getI() const { return i; } }; class Derived : public Base { float f; public: Derived( int i, float f ) : Base(i), f(f) {} f....
1 oct. 2019 à 11:44
Je viens de commencer à apprendre le C ++. En C, j'utiliserais simplement Node* cur_node, mais en C ++ cela ne fonctionne pas: struct Node { int val; }; struct Foo { unique_ptr<vector<Node>> nodes; unique_ptr<&Node> cur_node; }; int main() { Foo foo; foo.n....
10 sept. 2019 à 06:15
https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique écrit que std::make_unique peut être implémenté comme template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); } Cela ne fonctionne pas p....