Доступ к приватным методам через класс-оболочку
От: Аноним  
Дата: 04.10.10 14:30
Оценка:
class Param
{
public:
    Param();
private:
    doSome();
//...
};

class Wrapper
{
public:
    Wrapper(Param &param);
    Param *operator->();
};


Хочется разрешить доступ к методам объекта класса Param, только через класс-оболочку. Что-то вроде:

Param param();
Wrapper(param);
wrapper->doSome();


Само собой такой вариант не работает
Есть какие-нибудь способы защиты методов класса Param от пользователя?

На ум приходит только такой вариант, но он хлопотный:


class Param
{
public:
    Param();
private:
        friend class Wrapper;
    doSome();
//...
};


class Wrapper
{
public:
    Wrapper(Param &param);
    inline void doSome()
        { param.doSome(); }
};



//
В задаче, Param — это набор данных, доступ к которому может осуществляться из разных потоков. Param содержит мьютекс, хочется разрешить изменение и получение внутренних данных только через классы оболочки SharedAccess и UniqueAccess, которые бы предоставляли нужный доступ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.