我試圖通過一個項目熟悉C++,但是我遇到了一個錯誤,我不太清楚如何處理。我有以下代碼:在C++類命名空間中調用C函數
void myclass::write(std::string str) {
write(filedes, (void *)str.c_str(), str.length());
}
其中filedes是myclass的實例變量。試圖編譯這會產生錯誤:
myclass.cpp: In member function ‘void myclass::write(std::string)’:
myclass.cpp:38: error: no matching function for call to ‘myclass::write(int&, void*, size_t)’
myclass.cpp:37: note: candidates are: void myclass::write(std::string)
myclass.hpp:15: note: void myclass::write(std::string, int)
那麼我做錯了什麼?我能否從法律上合法地進行此函數調用?
你爲什麼要將'c_str'轉換爲void *?編譯器不會找到你想要調用的函數 – emartel
write系統調用將void *作爲參數。 – Jumhyn
把'::'放在'c'函數之前,以確定你想從全局命名空間得到函數......':: write(filedes,(void *)str.c_str(),str.length())' – memosdp