我有一个名为open的实例方法,需要调用在C中声明的函数,也称为open.关注样本:
void SerialPort::open()
{
if(_open)
return;
fd = open (_portName.c_str(), O_RDWR | O_NOCTTY );
_open = true;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它(使用GCC)时,我收到以下错误:
error: no matching function for call to 'SerialPort::open(const char*, int)'
Run Code Online (Sandbox Code Playgroud)
我包含了所有必需的C头.当我更改方法的名称,例如open2时,我没有编译问题.
我怎么解决这个问题.提前致谢.
unw*_*ind 34
呼叫
fd = ::open(_portName.c_str(), O_RDWR | O_NOCTTY );
Run Code Online (Sandbox Code Playgroud)
::
函数名前面的双冒号()是C++的作用域解析运算符:
如果解析运算符位于变量名称前面,则全局变量会受到影响.