перегрузка оператора разыменования - PullRequest
0 голосов
/ 06 сентября 2010

Я новичок в 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"

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

Ответы [ 3 ]

0 голосов
/ 06 сентября 2010

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

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

Извините, что вы не можете сделать больше.

0 голосов
/ 06 сентября 2010

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

0 голосов
/ 06 сентября 2010

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

...