我最近使用了新的C++ 11功能,如std :: shared_ptr,因爲我將C代碼轉換爲類,並且在此代碼中存在大量「老式「指針。 我有一個疑問:在一個類的方法中,我使用本地shared_ptr,我可以初始化它們與傳遞到另一個smart_ptr引用的數據,然後修改數據? 例如:std :: shared_ptr使用其他shared_ptr數據初始化
void myFunction(std::shared_ptr<T> &my_reference)
{
std::shared_ptr<T> my_local_ptr(my_reference.get());
/* Doing stuff on local pointer,
which modifies the object kept by my_reference pointer */
}
我做錯了嗎?或者你認爲更好地直接修改my_reference中的數據,而不進行冗餘操作?
問候
邁克
通過做你正在做什麼,你有*兩個*單獨的共享指針,具有單獨的引用計數,但都指向同一個對象。這通常不是一個好主意。如果你只是做'std :: shared_ptr my_local_ptr = my_reference;'正確的事情會自動發生「。 –