[英]Function Overloading for the standard library functions in C++
我有一個免費的功能作為課程的一部分。 在類的構造函數中,我正在做一些malloc
操作。 所以在destructor
我試圖釋放那個記憶。 但VS10編譯器抱怨說
free(pointer);
與我班級的自由功能的簽名不符。
所以問題是在一個類中,如果我們實現了與標准庫函數名稱相同的方法。 如何打電話給另一個。
問候,
您必須使用范圍運算符來獲取free
函數的正確范圍:
::free(pointer);
讓::
在開頭告訴編譯器在全局范圍內尋找free
函數,而不是在你的類中最近的范圍。
您應該對您的函數進行限定:
void YourClass::free(args) {
::free(your_member);
}
這將獲取全局命名空間中的free
函數,而不是您的類。
#include <cstdio>
也將free
和malloc
放入std
命名空間,因此std::free
和std::malloc
也可以。
(還應考慮使用new
/ delete
,以及智能指針。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.