我有一个免费的功能作为课程的一部分。在类的构造函数中,我正在进行一些malloc
操作。所以在destructor
我试图释放那段记忆。但VS10编译器抱怨
free(pointer);
与我班级的自由功能的签名不符。
所以问题是在一个类中,如果我们实现了与标准库函数名称相同的方法。如何打电话给另一个。
此致
答案 0 :(得分:7)
您必须使用范围运算符来获取free
函数的正确范围:
::free(pointer);
在开头有::
告诉编译器在全局范围内查找free
函数,而不是在您的类中最近的范围。
答案 1 :(得分:4)
您应该限制对该功能的调用:
void YourClass::free(args) {
::free(your_member);
}
这将获取全局命名空间中的free
函数,而不是您的类。
#include <cstdio>
也会将free
和malloc
放入std
命名空间,因此std::free
和std::malloc
也会有用。
(还应考虑使用new
/ delete
,以及智能指针。)