Bonjour,

Petit souci certainement basique avec les pointeurs intelligents.

Sans pointeurs intelligents, j'ai ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class A {
  Array *array;
public:
  A(){
    array = new Array[N];
    for(unsigned int i = 0 ; i < N ; i++)
      array[i] = Array(this);
  }
};
Avec pointeurs intelligent, je fais comment ?? Parce que finalement, Array(this), this devrait être un weak_ptr, sinon, on a un problème de référence cyclique non ?
Je veux dire, si j'utilise un shared_ptr<A> pour chaque Array, comme j'ai de l'autre côté un shared_array<Array> ça ne marchera pas, non ?

Et inversement, si je veux un weak_ptr<A> pour chaque Array, il me faut un shared_ptr<A> à la base ? Or celui-ci devrait être créé en amont, en dehors du constructeur A.

Bref. Un peu perdu sur ces questions.

Merci!