Код: Выделить всё
#include
#include
#include
using namespace std;
struct SPersonData
{
string m_name;
string m_surname;
};
class CPerson
{
public:
shared_ptr m_data;
string getName() const;
string getSurname() const;
void rename (const string&, const string&);
};
string CPerson::getName() const
{
if (m_data) return m_data->m_name;
return string();
}
string CPerson::getSurname() const
{
if (m_data) return m_data->m_surname;
return string();
}
void CPerson::rename (const string &name, const string &surname)
{
if (!((m_data) && m_data.unique()))
m_data = make_shared();
m_data->m_name = name;
m_data->m_surname = surname;
}
Код: Выделить всё
if (!((m_data) && m_data.unique()))
m_data = make_shared();
Как правильно реализовать копирование при записи в C++?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ead-safety
Мобильная версия