class Param
{
public:
Param();
private:
doSome();
//...
};
class Wrapper
{
public:
Wrapper(Param ¶m);
Param *operator->();
};
Хочется разрешить доступ к методам объекта класса Param, только через класс-оболочку. Что-то вроде:
Param param();
Wrapper(param);
wrapper->doSome();
Само собой такой вариант не работает
Есть какие-нибудь способы защиты методов класса Param от пользователя?
На ум приходит только такой вариант, но он хлопотный:
class Param
{
public:
Param();
private:
friend class Wrapper;
doSome();
//...
};
class Wrapper
{
public:
Wrapper(Param ¶m);
inline void doSome()
{ param.doSome(); }
};
//
В задаче, Param — это набор данных, доступ к которому может осуществляться из разных потоков. Param содержит мьютекс, хочется разрешить изменение и получение внутренних данных только через классы оболочки SharedAccess и UniqueAccess, которые бы предоставляли нужный доступ.