C++ wrapper with same name

cwrapper

How can I do a wrapper function which calls another function with exactly same name and parameters as the wrapper function itself in global namespace?

For example I have in A.h foo(int bar); and in A.cpp its implementation, and in B.h foo(int bar); and in B.cpp foo(int bar) { foo(bar) }

I want that the B.cpp's foo(bar) calls A.h's foo(int bar), not recursively itself.

How can I do this? I don't want to rename foo.

Update:

A.h is in global namespace and I cannot change it, so I guess using namespaces is not an option?

Update:

Namespaces solve the problem. I did not know you can call global namespace function with ::foo()

Best Answer

does B inherit/implement A at all?

If so you can use

int B::foo(int bar) 
{ 
   ::foo(bar); 
}

to access the foo in the global namespace

or if it does not inherit.. you can use the namespace on B only

namespace B
{
int foo(int bar) { ::foo(bar); }
};
Related Topic