若是在類中定義了和庫函數同名的函數,以下面代碼中的printf,那麼再調用庫函數printf的時候,就會有相似「no matching function for call to...」的編譯錯誤,即便類中定義的函數和庫函數參數、返回值並不相同。函數
#include <stdio.h>spa
}io
解決辦法是在包含庫函數的頭文件上加上namespace,並在調用的時候,加上命名空間,問題解決。代碼以下:編譯
namespace stdclib {
#include <stdio.h>
}
class CAClass{
public:
CAClass() { stdclib::printf("hello\n"); }
~CAClass() {}
private:
void printf() { }
};
int main()
{
CAClass aClass;
return 0;
}function