Ref and class function calls?

Tofu Ninja emmons0 at purdue.edu
Tue Apr 16 07:57:09 PDT 2013


On Tuesday, 16 April 2013 at 14:33:21 UTC, John Colvin wrote:
> A member function cannot modify it's own 'this' pointer.
>
> However, a free function can do it happily, which when combined 
> with UFCS gives you the same syntax and behaviour:
>
> class A {
> 	//......
> }
>
> void replace(ref A a)
> {
> 	a = new A();
> }
>
> void main() {
> 	A a = new A();
> 	A b = a;
> 	assert(b is a);
> 	b.replace();
> 	assert(!(b is a));
> }
>
> http://dpaste.dzfl.pl/147f69e1

Yes... this is what I feared. I knew I could do it like that but 
I was hoping a more elegant solution was available, seems like 
bad design to have a function that is fully intended to be a 
class function but not actually be able to declare it within the 
class block.


More information about the Digitalmars-d-learn mailing list