<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">You could try assign subclass instances to arrays of it's parent class, as shown in the snippet bellow.</div><div class="">It is not a very elegant syntax, but at least it makes your plus(A arg[]) function work like you would expect.</div><div class=""><br class=""></div><div class="">best,</div><div class="">Casper</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 13px; font-family: Monaco; color: rgb(4, 51, 255);" class=""><div style="margin: 0px;" class="">class<span style="color: #000000" class=""> A {</span></div><div style="margin: 0px;" class="">&nbsp; &nbsp; <span style="color: #de9210" class="">42 </span>=&gt;<span style="color: #de9210" class=""> </span>int a;</div><p style="margin: 0px; min-height: 17px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px;" class="">&nbsp; &nbsp; fun void print() {</div><div style="margin: 0px;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;&lt;a&gt;&gt;&gt;;</div><div style="margin: 0px;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px;" class="">}</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px;" class="">class<span style="color: #000000" class=""> B </span>extends<span style="color: #000000" class=""> A {</span></div><div style="margin: 0px;" class="">&nbsp; &nbsp; <span style="color: #de9210" class="">101</span> =&gt; int b;</div><p style="margin: 0px; min-height: 17px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px;" class="">&nbsp; &nbsp; fun void print() {</div><div style="margin: 0px;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;&lt;b&gt;&gt;&gt;;</div><div style="margin: 0px;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px;" class="">}</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px;" class="">fun void plus(A arg[]) {</div><div style="margin: 0px;" class="">&nbsp; &nbsp; for (<span style="color: #de9210" class="">0</span> =&gt; int i; i &lt;&nbsp; arg.size() &nbsp; &nbsp; ; i++) {</div><div style="margin: 0px;" class="">&nbsp; &nbsp; &nbsp; &nbsp; arg[i].a ++;</div><div style="margin: 0px;" class="">&nbsp; &nbsp; &nbsp; &nbsp; arg[i].print();</div><div style="margin: 0px;" class="">&nbsp; &nbsp; }</div><p style="margin: 0px; min-height: 17px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px;" class="">}</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px; color: rgb(114, 158, 18);" class="">// first declare the 'container'.</div><div style="margin: 0px;" class="">A @ foo[<span style="color: #de9210" class="">2</span>];</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px; color: rgb(114, 158, 18);" class="">// use new operator to create B instances.</div><div style="margin: 0px;" class="">(new B) @=&gt; foo[<span style="color: #de9210" class="">0</span>];</div><div style="margin: 0px;" class="">(new B) @=&gt; foo[<span style="color: #de9210" class="">1</span>];</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px;" class=""><span style="color: #de9210" class="">1</span> =&gt; foo[<span style="color: #de9210" class="">0</span>].a;</div><div style="margin: 0px;" class=""><span style="color: #de9210" class="">2</span> =&gt; foo[<span style="color: #de9210" class="">1</span>].a;</div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px; min-height: 17px;" class=""><br class=""></div><div style="margin: 0px;" class="">plus(foo);</div><div style="margin: 0px; color: rgb(114, 158, 18);" class="">// notice, foo[0] &amp; foo[1] still behave like a B instance.</div><div style="margin: 0px;" class="">&lt;&lt;&lt;<span style="color: #515151" class="">"foo[0].a"</span>, foo[<span style="color: #de9210" class="">0</span>].a&gt;&gt;&gt;;</div><div style="margin: 0px;" class="">&lt;&lt;&lt;<span style="color: #515151" class="">"foo[1].a"</span>, foo[<span style="color: #de9210" class="">1</span>].a&gt;&gt;&gt;;</div><div class=""><br class=""></div></div></div><br class=""><div><blockquote type="cite" class=""><div class=""><br class=""> &nbsp;&nbsp;1. Inheritance and Arrays (Julien Saint-Martin)<br class=""><br class=""><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">From: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Julien Saint-Martin &lt;<a href="mailto:julien.saintmartin@googlemail.com" class="">julien.saintmartin@googlemail.com</a>&gt;<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">To: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><a href="mailto:chuck-users@lists.cs.princeton.edu" class="">chuck-users@lists.cs.princeton.edu</a><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Date: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">2 januari 2015 16:15:54 CET<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Reply-To: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" class="">chuck-users@lists.cs.princeton.edu</a>&gt;<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Subject: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">[chuck-users] Inheritance and Arrays</b><br class=""></span></div><br class=""><br class="">Hi!<br class=""><br class="">I would like to pass arrays of objects to a function taking an array of parent class as argument.<br class="">I try different things but unfortunately I have compilation errors each time.<br class=""><br class="">The following example works with no array:<br class=""><br class="">class A {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int a;<br class="">}<br class=""><br class="">class B extends A {<br class="">int b;<br class="">}<br class=""><br class="">fun void plus(A arg) {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg.a ++;<br class="">}<br class=""><br class="">B foo;<br class=""><br class="">1 =&gt; foo.a;<br class="">plus (foo);<br class="">&lt;&lt;&lt;"foo.a", foo.a&gt;&gt;&gt;;<br class=""><br class=""><br class=""><br class=""><br class="">But When I try the same with arrays it doesn't compile:<br class="">[l13.ck]:line(22): argument type(s) do not match:<br class="">[l13.ck]:line(22): ... for function 'plus(...)' ...<br class="">[l13.ck]:line(22): ...(please check the argument types)<br class=""><br class="">class A {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int a;<br class="">}<br class=""><br class="">class B extends A {<br class="">int b;<br class="">}<br class=""><br class="">fun void plus(A arg[]) {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (0 =&gt; int i; i &lt; &nbsp;arg.size() &nbsp;&nbsp;&nbsp;&nbsp;; i++) {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg[i].a ++;<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class=""><br class="">}<br class=""><br class="">B foo[2];<br class=""><br class="">1 =&gt; foo[0].a;<br class="">2 =&gt; foo[1].a;<br class="">plus (foo);<br class="">&lt;&lt;&lt;"foo[0].a", foo[0].a&gt;&gt;&gt;;<br class="">&lt;&lt;&lt;"foo[1].a", foo[1].a&gt;&gt;&gt;;<br class=""><br class=""><br class="">Any idea ?<br class=""><br class="">Thanks in advance and Happy new year!!<br class=""><br class="">Julien<br class=""><br class=""><br class=""><br class=""><br class="">_______________________________________________<br class="">chuck-users mailing list<br class=""><a href="mailto:chuck-users@lists.cs.princeton.edu" class="">chuck-users@lists.cs.princeton.edu</a><br class="">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users<br class=""></div></blockquote></div><br class=""></body></html>