Bug 17655 – Call parent class reference.

Status
RESOLVED
Resolution
INVALID
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Linux
Creation time
2017-07-15T09:32:00Z
Last change time
2017-07-15T09:53:48Z
Assigned to
nobody
Creator
vital.fadeev

Attachments

IDFilenameSummaryContent-TypeSize
1651test.dsource codeapplication/x-dsrc887

Comments

Comment #0 by vital.fadeev — 2017-07-15T09:32:34Z
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?
Comment #1 by vital.fadeev — 2017-07-15T09:53:48Z
I undestend. It closed.