В книге «C++ параллелизм в действии: Практическое Многопоточность» Энтони Уильямс Я нашел этот пример кодаC++ Частный доступ мьютекс
template<typename T>
class threadsafe_stack
{
private:
std::stack<T> data;
mutable std::mutex m;
public:
threadsafe_stack(){}
threadsafe_stack (const threadsafe_stack& other)
{
std::lock_guard<<std::mutex> lock(other.m);
... rest of the code.
(в моей версии книги это листинг 3.5)
Почему У меня есть прямой доступ к другим частным данным объекта (mutex m в этом случае)? Возможно, я что-то пропустил или, может быть, это опечатка (у меня есть русская версия книги и нет ошибок)
Заранее спасибо.
Dmitry.
Ничего особенного, вы можете получить доступ к частным членам из других экземпляров одного и того же класса. –
Что сказал @ πάνταῥεῖ. Экземпляры могут получить доступ к личным данным в других экземплярах того же _class_. Если вы подумаете об этом - это единственный способ, с помощью которого можно было бы создать конструкторы копирования (не говоря уже о 'operator =' и т. Д. И т. Д.). – davidbak