我是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"
在运算符重载函数中有没有办法知道对象是在读还是写?欢迎提出建议。
答案 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)运算符返回提供转换操作符的代理以获取内容类型。代理的生命周期可用于定义锁。