I have a free function as part of a class. In the constructor for the class i am doing some malloc
operations . So in the destructor
i am trying to free that memory. But VS10 compiler complains that the
free(pointer);
doesn't match the signature of the free function of my class.
So question is In a class wherein if we have implemented methods which have same names as that of standard library functions . How to call one over the other.
Regards,
You have to use the scope operator to get the correct scope of the free
function:
::free(pointer);
Having ::
at the beginning tells the compiler to look for the free
function at the global scope, not the closest scope which is your class.
You should qualify your call to the function:
void YourClass::free(args) {
::free(your_member);
}
This will pick up the free
function in the global namespace and not in your class.
#include <cstdio>
also puts free
and malloc
into the std
namespace, so std::free
and std::malloc
will also work.
(Use of new
/ delete
should also be considered, as well as smart pointers.)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.