重载解除引用运算符

时间:2010-09-06 05:16:34

标签: overloading operator-keyword dereference

我是C ++的新手,我有一个关于重载dereference运算符的问题。我正在构建一个内存对象存储库,供应用程序使用。数据存储被映射到应用程序存储空间,应用程序可以使用解引用运算符直接读取/修改对象。我计划提供下面描述的界面

       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 :(得分:0)

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

答案 1 :(得分:0)

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

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

对不起,你可以做的更多。

答案 2 :(得分:0)

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