In Buch "C++ Concurrency in Aktion: Praktische Multithreading" von Anthony Williams fand ich diesen Code BeispielC++ Privat Mutex Zugang
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.
(in meiner Version des Buches ist dies Listing 3.5)
Warum Ich habe direkten Zugriff auf andere Objekt private Daten (Mutex m in diesem Fall)? Vielleicht habe ich etwas verpasst oder vielleicht ist dies ein Tippfehler (Ich habe russische Version des Buches und es gibt keine Errata)
Vielen Dank im Voraus.
Dmitry.
Nichts besonderes, können Sie 'private' Mitglieder von anderen Instanzen innerhalb der gleichen Klasse zugreifen. –
Was @ πάνταῥεῖ sagte. Instanzen können auf private Daten in anderen Instanzen derselben _class_ zugreifen. Wenn Sie darüber nachdenken - dies ist die einzige Möglichkeit, wie Kopierkonstruktoren funktionieren können (ganz zu schweigen von 'operator =', etc etc). – davidbak