4

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,

2
  • You might want to post the your free function's signature. Commented Feb 3, 2012 at 8:29
  • 4
    1. You should be using new/delete. 2. The code might be useful at this end to comment further. Commented Feb 3, 2012 at 8:29

2 Answers 2

8

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.

Sign up to request clarification or add additional context in comments.

Comments

5

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.)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.