我有一個免費的函數作爲類的一部分。在類的構造函數中,我正在做一些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