使用具有相同方法的类在C++中调用非成员函数

jas*_*cao 12 c c++

我有一个名为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++的作用域解析运算符:

如果解析运算符位于变量名称前面,则全局变量会受到影响.


Tho*_*mas 8

::open而不是open.该::前缀表示这个名字应该从全局范围内作出.(全局命名空间?说实话,我不确定它的确切含义......)