g++編譯錯誤「no matching function for call to..."的解決

若是在類中定義了和庫函數同名的函數,以下面代碼中的printf,那麼再調用庫函數printf的時候,就會有相似「no matching function for call to...」的編譯錯誤,即便類中定義的函數和庫函數參數、返回值並不相同。函數

#include <stdio.h>spa


class CAClass{
    public:
        CAClass() { printf("hello\n"); }
        ~CAClass() {}
    private:
        void printf() { }
};

int main()
{
    CAClass aClass;
    return 0;

}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

相關文章
相關標籤/搜索