-1
我有一個組中的所有指向相同的對象共享指針。在某個時刻,我希望這些指針離開第一個對象(應該被銷燬),並且都開始指向另一個對象。我只能訪問其中的一個指針,我不知道如何去做。如何更改由一組共享指針指向的對象?
一個例子:
using Ptr = shared_ptr<int>;
void switch_all(Ptr &p) {
p.reset(new int(14));
}
int main() {
Ptr a(new int(12));
Ptr b = a;
Ptr c(a);
cout << "Initial situation: " << endl;
cout << *a.get() << '\t' << a.get() << endl;
cout << *b.get() << '\t' << b.get() << endl;
cout << *c.get() << '\t' << c.get() << endl;
switch_all(c);
cout << "After reset: " << endl;
cout << *a.get() << '\t' << a.get() << endl;
cout << *b.get() << '\t' << b.get() << endl;
cout << *c.get() << '\t' << c.get() << endl;
}
此輸出
Initial situation:
12 0xb8797038
12 0xb8797038
12 0xb8797038
After reset:
12 0xb8797038
12 0xb8797038
14 0xb8797468
我想要做的是改變switch_all
的方式,輸出變爲
Initial situation:
12 0xb8797038
12 0xb8797038
12 0xb8797038
After reset:
14 0xb8797468
14 0xb8797468
14 0xb8797468
這可能嗎?怎麼樣?
我希望有一種方法來改變由管理對象存儲的指針,所以所有指向該管理器對象的共享指針現在指向一個不同的管理對象。猜猜我必須從頭開始設計一個shared_ptr類。 – user6245072