Ref parameter: intended behavior or bug?

Mike Parker aldacron71 at yahoo.com
Tue Aug 21 09:15:11 PDT 2007


I knocked up a sample program to demonstrate reference parameters, then 
got a result that wasn't at all what I expected:

====================================

import std.stdio;

struct MyStruct
{
	ubyte[] contents;
}

class MyClass
{
	ubyte[] contents;
}

void structDefault(MyStruct ms)
{
	writefln("Struct default: %d", ms.sizeof);
}

void structRef(ref MyStruct ms)
{
	writefln("Struct ref: %d", ms.sizeof);
}

void classDefault(MyClass mc)
{
	writefln("Class default: %d", mc.sizeof);
}

void main()
{
	MyStruct ms;
	MyClass mc = new MyClass;
	
	structDefault(ms);
	structRef(ms);
	classDefault(mc);
}
==================================

Here's the output:

Struct default: 8
Struct ref: 8
Class default: 4

The first and last are what I thought they would be, but I expected the 
Struct ref line to output 4, since it's supposed to be a ref parameter. 
I assume this to be a bug, but want to make sure there's not something 
intended going on.


More information about the Digitalmars-d-learn mailing list