Re: Pass by reference but with default parameter
On Sep 22, 12:19 pm, "Francesco S. Carta" <entul...@gmail.com> wrote:
On 22 Set, 12:54, "Manu" <manu.ram...@siemens.com> wrote:
bool Func1(A* ptr = NULL)
{
ptr = Func2();
}
First off, you missed to return an appropriate value,
Not to mention that he's modifying a local variable.
and secondarily, it would be better to use the 0 (zero)
literal instead of NULL.
Why? Everywhere I've worked, using NULL has been preferred.
Just a nit, but "void main()" won't compile with a conformant
compiler. The function main must return int.
{
A* ptr1;
Func1(ptr1);
}
In the above case the value of ptr1 will be some junk value.
And being junk, you shouldn't pass it around.
If you want a pointer to something but you can't appropriately
set it in the declaration, initialize it to 0.
As a result i modified the code like
bool Func1(A*& ptr)
{
ptr = Func2();
}
Now it works fine.
But I need a function with a default parameter as NULL but
at the same time the parameter has to be passed as
reference.
How can I achieve it??
As Ian pointed out, you cannot have a null reference.
If you detail better your needs and your aims you could get
some good advice about the implementation. What exactly are
Func1 and Func2 meant to do?
He can write something like:
bool Func1( A* const& ptr = NULL ) ;
If he needs a non-const reference, something like:
extern A* defaultParam ;
bool Func1( A* const& ptr = defaultParam ) ;
will work, but he really has to make sure that he doesn't
actually modify the defaultParam somewhere (since it's not
const).
--
James Kanze