Thread overview
Function default parameters
Nov 14, 2008
Tim M
Nov 14, 2008
BCS
November 14, 2008
I want to use the return value of another member function as the default for a parameter. I could just overload it but I would prefer to do it like:

module test;

class Thing
{
	char[] getString(uint len = this.strLen())
	{
		char[] a = new char[len];
		return a;
	}
	uint strLen()
	{
		return 6;
	}
}

int main()
{
	Thing t = new Thing;
	char[] abc = t.getString;
	return 0;
}

test.d(6): Error: 'this' is only defined in non-static member functions, not Thing
November 14, 2008
On Thu, Nov 13, 2008 at 8:34 PM, Tim M <a@b.com> wrote:
> I want to use the return value of another member function as the default for a parameter. I could just overload it but I would prefer to do it like:

You can't, sorry.  You'll just have to overload it.
November 14, 2008
Reply to tim,

> I want to use the return value of another member function as the
> default  for a parameter. I could just overload it but I would prefer
> to do it like:
> 
> module test;
> 
> class Thing
> {
> char[] getString(uint len = this.strLen())
> {
> char[] a = new char[len];
> return a;
> }
> uint strLen()
> {
> return 6;
> }
> }
> int main()
> {
> Thing t = new Thing;
> char[] abc = t.getString;
> return 0;
> }
> test.d(6): Error: 'this' is only defined in non-static member
> functions,  not Thing
> 

Sorry. No sutch luck. The overload is what your stuck with.