2010-09-06 2 views
0

Я новичок в C++, и у меня есть вопрос о перегрузке оператора разыменования. Я создаю хранилище объектов памяти, которое должно использоваться приложениями. Хранилище данных отображается в пространство памяти приложений, и приложения могут напрямую читать/изменять объект с помощью оператора разыменования. Я планирую обеспечить интерфейс, описанный нижеперегрузка оператора разыменования

 DsObject *obj = get_ds_object_ref ("Junk"); // get reference to the object 
     int i = obj->value; // obj is read locked and the value is copied to i variable 
     obj->value = i; // obj is write locked and i is copied to the field "value" 

В функции перегрузки оператора есть способ узнать, является ли объект чтения или записи? предложения приветствуются.

+0

Вы можете получить ссылку на объект, но я не думаю, что вы можете указать намерение пользователя о чтении или записи. – harper

+0

В последнем примере вы хотели бы записать блокировку объекта. Как вы отпустите замок? – harper

ответ

0

Я предлагаю вам использовать функции get/set, они обеспечивают необходимый тип операции: чтение или запись.

0

Нет, я так не думаю. Невозможно (AFAIK) определить, как используется значение obj->. Возможно, вам потребуется что-то вроде этого:

DsObject *obj = get_ds_object_ref ("Junk"); 
int i = GetValue(obj); 
SetValue(obj,i); 

Я сожалею, что не намного больше, вы можете сделать.

0

Чтобы получить блокировку объекта, вам понадобится дополнительный прокси-объект. Пусть оператор разблокировки (o любой другой) возвращает прокси-сервер, предоставляющий литой исполнитель, чтобы получить тип intenden. Время жизни прокси-сервера можно использовать для определения блокировки.

Смежные вопросы