Dynamic Arrays & Class Properties
Jarrett Billingsley
kb3ctd2 at yahoo.com
Thu Aug 28 14:19:34 PDT 2008
"Denis Koroskin" <2korden at gmail.com> wrote in message
news:op.ugl05wn1o7cclz at proton.creatstudio.intranet...
> On Thu, 28 Aug 2008 22:22:44 +0400, Sergey Gromov <snake.scaly at gmail.com>
> wrote:
>
>> Mason Green <mason.green at gmail.com> wrote:
>>> Hi,
>>>
>>> Anyone know how to expose dynamic array elements via class properties?
>>> I would like to do something this this:
>>>
>>> class Foo {
>>>
>>> private int[] m_dummy;
>>>
>>> this() {
>>> m_dummy ~= 19;
>>> m_dummy ~= 77;
>>> }
>>>
>>> int dummy( ??????? ) {
>>> return m_dummy[x];
>>> }
>>> }
>>>
>>> void main() {
>>> auto foo = new Foo();
>>> Cout(foo.dummty[0]); // Print 19
>>> }
>>>
>>> Any help would be much appreciated! The question marks are where I'm
>>> stuck....
>>
>> class Foo {
>> private int[] m_dummy;
>> const int dummy() {
>> return m_dummy;
>> }
>> }
>>
>> I think this is better than tons of templates.
>>
>
> First, it should be like this:
>
> class Foo {
> this()
> {
> m_dummy = new int[1];
> m_dummy[0] = 19;
> }
>
> const(int)[] dummy() {
> return m_dummy;
> }
>
> private int[] m_dummy;
> }
>
> Second, that's D2 :)
>
> That's kinda strange, but unfortunately most of the discussion here is
> about D1, not D2 :(
> There is no const in D1:
>
> const int[] test = [0, 1, 2, 3];
> test[0] = 2;
>
> writefln(test[0]); // prints 2
On Windows. I'd bet that'd give you a segfault on Linux. Though it doesn't
change the fact that it's actually incorrect and that the compiler really
*should* give an error for it.
More information about the Digitalmars-d-learn
mailing list