【发布时间】:2012-11-12 18:37:59
【问题描述】:
我正在尝试通过一个项目来熟悉 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*?编译器找不到您要调用的函数 -
write 系统调用将 void* 作为参数。
-
把
::放在c函数之前,以确定你想要来自全局命名空间的函数...::write(filedes, (void *)str.c_str(), str.length())
标签: c++ system-calls