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"

在运算符重载函数中,有没有办法知道对象是被读取还是被写入?欢迎提出建议。

4

3 回答 3

0

我建议您使用 get/set 函数,它们提供所需的操作类型:读或写。

于 2010-09-06T05:21:00.990 回答
0

不,我不这么认为。无法(AFAIK)确定如何使用 obj->value。也许你会需要这样的东西:

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

很抱歉,您无能为力。

于 2010-09-06T05:23:06.793 回答
0

要获得对该对象的锁定,您需要一个额外的代理对象。让 derefence (o any other) 操作符返回提供强制转换操作符的代理以获取预期类型。代理的生命周期可以用来定义一个锁。

于 2010-09-06T05:24:48.010 回答