Я хотел бы повторно использовать shared_ptr
среди нескольких функций-членов в классе.
#include <iostream>
#include <memory>
class TestClass
{
private:
std::shared_ptr<int> int_shared_ptr;
public:
TestClass()
{
std::cout << "I will create a shared ptr object here.";
std::shared_ptr<int> int_ptr (new int(10));
std::shared_ptr<int> int_shared_ptr(int_ptr);
std::cout << "The created shared ptr has value of " << *int_shared_ptr << "\n";
}
void check_if_shared()
{
std::cout << "The created shared ptr has value of " << int_shared_ptr << "\n";
}
};
int main(){
auto tc = TestClass();
tc.check_if_shared();
}
Вывод
I will create a shared ptr object here.The created shared ptr has value of 10
The created shared ptr has value of 0
int_shared_ptr
кажется уничтоженным, как только он покидает конструктор. Может кто-нибудь предложить способ сохранить общий указатель после выхода из конструктора?