C++ 类命名空间中的 C 函数调用

Jum*_*hyn 2 c++ system-calls

我试图通过一个项目来熟悉 C++,但我遇到了一个我不太确定如何处理的错误。我有以下代码:

void myclass::write(std::string str) {
  write(filedes, (void *)str.c_str(), str.length());
}
Run Code Online (Sandbox Code Playgroud)

其中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)
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?我不能合法地从方法中调用这个函数吗?

tro*_*foe 6

大概你想调用write(2),它在全局命名空间中:

::write(filedes, str.c_str(), str.length());
Run Code Online (Sandbox Code Playgroud)

(您可能需要#include <unistd.h>)。