我有一个免费的函数作为类的一部分。在类的构造函数中,我正在做一些malloc
操作。所以在destructor
我试图释放内存。但VS10编译器抱怨函数C++中的标准库函数的重载
free(pointer);
不匹配我班的自由功能的签名。
所以问题是在一个类中,如果我们已经实现了与标准库函数名称相同的方法。如何相互呼叫。
问候,
我有一个免费的函数作为类的一部分。在类的构造函数中,我正在做一些malloc
操作。所以在destructor
我试图释放内存。但VS10编译器抱怨函数C++中的标准库函数的重载
free(pointer);
不匹配我班的自由功能的签名。
所以问题是在一个类中,如果我们已经实现了与标准库函数名称相同的方法。如何相互呼叫。
问候,
你应该有资格您的来电功能:
void YourClass::free(args) {
::free(your_member);
}
这将拿起free
功能在全局命名空间,而不是在你的类。
#include <cstdio>
也使free
和malloc
到std
命名空间,因此std::free
和std::malloc
也会起作用。
(的new
/delete
使用,也应考虑,以及智能指针。)
你必须使用范围操作,以获得free
功能的正确范围:
::free(pointer);
有::
开头告诉编译器查找在该free
功能全球范围,而不是你班上最接近的范围。
你可能想发布你的'free'函数的签名。 – 2012-02-03 08:29:01
1.你应该使用'new/delete'。 2.代码可能有助于进一步评论。 – 2012-02-03 08:29:06