Cannot call mutable method on final struct
Christian Kamm
kamm.incasoftware at shift-at-left-and-remove-this.de
Mon Sep 10 07:32:29 PDT 2007
Christopher Wright wrote:
> New minimal test case:
> ---
> import std.boxer;
> void main () {
> foreach (b; boxArray(9, 'b')) {
> b.toString;
> }
> }
> ---
The problem is that the b defined in the foreach statement is final, thus D
won't let you call non-const methods on it. Boxer.toString is not a const
method.
Same thing without boxer or toString:
---
struct Foo
{
const void const_bar() {}
void nonconst_bar() {}
}
void main()
{
Foo[] foo_arr;
foo_arr.length = 1;
foreach(foo; foo_arr)
{
foo.const_bar(); // OK
foo.nonconst_bar(); // Error: cannot call mutable method on final struct
}
}
---
More information about the Digitalmars-d-learn
mailing list