How to I get pointer to an Array and cast to a void * and back ?
seany
seany at uni-bonn.de
Thu Jun 24 14:06:11 UTC 2021
I have a struct :
struct a {
int i;
// some more stuff ...
}
In a Class, I define public global `void * dataSet; `
In a function `f`, of the same class: i call :
void f() {
a[] rd_flattened;
a[] * rd;
// DO SOME WORK HERE ....
this.dataSet = & rd_flattened;
rd = cast (a [] *) dataSet;
write("length of rd is : "); writeln((*rd).length); // <---
this works..
// do some work on rd
this.dataSet = rd;
rd = cast (field.rawData [] *) dataSet;
write("length of rd for a second time is : ");
writeln((*rd).length); // <--- this ALSO works..
}
Now outside `f`, in the same class, i call :
void f2() {
f();
a[] *aa ;
aa = cast (a [] *) this.dataSet; // recall dataset is public
global
// if i print the address of this.dataSet here, this is the
same as inside f()
write("after calling f, count is: "); writeln((*aa).length);
readln();
// here the situation completely blows up . the length is
wrong.
}
I need some help here. Sorry, can't post code. It is proprietary.
What is causing this issue ?
thank you.
More information about the Digitalmars-d-learn
mailing list