Created attachment 1651
source code
Exxample:
class Node {
Node[] members;
Node parent;
void add_member(ref Node member) {
members ~= member;
member.parent = this;
}
}
class Char : Node {
}
class Image : Node {
}
Node root = new Char();
Char ch = new Char();
Image image = new Image();
root.add_member(ch);
root.add_member(ch);
root.add_member(ch);
root.add_member(image);
root.add_member(image);
root.add_member(image);
This is simple tree implementation:
Node
Char
Char
Char
Image
Image
Image
dmd compile it with error:
Error: function Node.add_member (ref Node member) is not callable using argument types (Char)
I try casting, but also error:
root.add_member(cast(Node)ch);
I try pass by out and inout, but also error:
void add_member(out Node member) {...}
void add_member(inout Node member) {...}
What is true way?
I need change the property "parent" (Node.parent = this) and I think what pass by reference is good (ref Node member). Or not?