DMD 1.022 and 2.005 releases

BLS nanali at nospam-wanadoo.fr
Wed Oct 10 09:23:30 PDT 2007


0ffh schrieb:
> BLS wrote:
>> Would be nice if you are willing to offer an example.
>> It could also be used as example on :
>> http://www.prowiki.org/wiki4d/wiki.cgi?PortingFromCxx
>> thanks in advance, Bjoern
> 
> Okay, I am more a C type of person not C++, so I hope
> I do not write anything wrong now... :)
> 
> I have a C++ function getting an int &a:
> 
> ---<snip>---
> 
> void addTo(int &a,int b)
> {
>   a+=b;
> }
> 
> void main()
> {
>   int a=5;
>   addTo(a,3);
>   printf("a=%i\n",a); // prints "a=8\n"
> }
> 
> ---<snap>---
> 
> IIRC this is really just syntactic sugar for passing
> a pointer that is automatically dereferenced.
> In C I replace the &a with an *a and dereference:
> 
> ---<snip>---
> 
> void addTo(int *a,int b) // &a -> *a
> {
>   (*a)+=b; // a -> (*a)
> }
> 
> void main()
> {
>   int a=5;
>   addTo(&a,3); // a -> &a
>   printf("a=%i\n",a); // prints "a=8\n"
> }
> 
> ---<snap>---
> 
> This has the added advantage, that at the point where the
> function is called, I can see that a pointer is passed,
> while in C++ I can't. That's why C++ coders so often write
> (const T &ref) to avoid accidential side effects which
> would be hard to find just looking at the function call.
> 
> This might work in D, although I have never tried it:
> 
> ---<snip>---
> 
> void addTo(ref int a,int b)
> {
>   a+=b;
> }
> 
> void main()
> {
>   int a=5;
>   addTo(a,3);
>   printf("a=%i\n",a); // prints "a=8\n"
> }
> 
> ---<snap>---
> 
> Regards, Frank
Thanks Frank.
Yes the (ref int a) stuff works fine.
But function parameters are not part of the problem

The problem is ;
//C++
int value = 100;
int & rIntRef = value;

Bjoern



More information about the Digitalmars-d-announce mailing list