Pointeurs intelligents shared_array, shared_ptr et weak_ptr
Bonjour,
Petit souci certainement basique avec les pointeurs intelligents.
Sans pointeurs intelligents, j'ai ça :
Code:
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!