2012-02-03 35 views
2

我有一个免费的函数作为类的一部分。在类的构造函数中,我正在做一些malloc操作。所以在destructor我试图释放内存。但VS10编译器抱怨函数C++中的标准库函数的重载

free(pointer); 

不匹配我班的自由功能的签名。

所以问题是在一个类中,如果我们已经实现了与标准库函数名称相同的方法。如何相互呼叫。

问候,

+0

你可能想发布你的'free'函数的签名。 – 2012-02-03 08:29:01

+4

1.你应该使用'new/delete'。 2.代码可能有助于进一步评论。 – 2012-02-03 08:29:06

回答

3

你应该有资格您的来电功能:

void YourClass::free(args) { 
    ::free(your_member); 
} 

这将拿起free功能在全局命名空间,而不是在你的类。

#include <cstdio>也使freemallocstd命名空间,因此std::freestd::malloc也会起作用。

(的new/delete使用,也应考虑,以及智能指针。)

6

你必须使用范围操作,以获得free功能的正确范围:

::free(pointer); 

::开头告诉编译器查找在该free功能全球范围,而不是你班上最接近的范围。