Modify const reference data
Heinz
thor587 at yahoo.com
Sun Dec 8 18:53:00 PST 2013
[DMD 2.064.2]
Hello,
I've been strugling with a solution before bothering you guys
here (again). I have my own complex code but i made a VERY simple
test case to reproduce my problem, here's the code:
private import std.stdio;
class A
{
private const ubyte* data;
private ubyte[] abc;
this()
{
abc = [1,2,3,4];
data = cast(const ubyte*)abc.ptr;
}
public void print()
{
for(size_t i = 0; i < 4; i++)
{
writefln("%d", data[i]);
}
}
}
class B
{
private const ubyte* data;
private ubyte[] abc;
this()
{
data = cast(const ubyte*)abc.ptr;
}
public void foo()
{
abc = [1,2,3,4];
}
public void print()
{
for(size_t i = 0; i < 4; i++)
{
writefln("%d", data[i]);
}
}
}
void main()
{
A a = new A();
a.print(); // OK.
B b = new B();
b.print(); // Crash.
}
The thing is that i can not use the data that const variable
"data" in class B is referencing because in my original code i
get "Invalid Memory Operation", in the test case i get "access
violation" but it doesn't matter the name of the exception, the
only thing that matters is that the exception raises for the same
reason. I understand that i should not modify the const data
outside a constructor but by stricts reason i can't avoid that.
Do you guys have any other aproach to get away with this? (modify
a const reference data and then manipulate that data). THANK YOU
very much in advance. D2 learner by the way.
More information about the Digitalmars-d-learn
mailing list