c++ - How to read and write shared_ptr? -
when data use shared_ptr
shared number of entries, way read , write data show sharing? example
i have data structure
struct data { int a; int b; }; data data; data.a = 2; data.b = 2;
i can write out in file data.txt
as
2 2
and read file, can data
values a = 2
, b = 2
. if data uses share_ptr, becomes difficult. example,
struct data { shared_ptr<int> a; shared_ptr<int> b; }; data data;
data can
data.a.reset(new int(2)); data.b = data.a;
or
data.a.reset(new int(2)); data.b.reset(new int(2));
the 2 cases different. how write data data.txt
file , read file data, can same data same relations of a
, b
?
this kind of data serialization problem. here, want serialize data
has pointer types within it. when serialize pointer values, data pointing written somewhere, , pointers converted offsets file data.
in case, can think of int
values being written out right after object, , "pointer" values represented number of bytes after object. so, each data
in file like:
|total-bytes-of-data| |offset-a| |offset-b| |value[]|
if a
, b
point same instance, have same offset. if a
, b
point different instances, have different offsets.
i'll leave exercise problem of detecting , dealing sharing happens between different data
instances.
Comments
Post a Comment