繁体   English   中英

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

[英]Calling in C++ a non member function inside a class with a method with the same

我有一个名为open的实例方法,需要调用在C中声明的函数,也称为open 关注样本:

void SerialPort::open()
{
    if(_open)
        return;
    fd = open (_portName.c_str(), O_RDWR | O_NOCTTY ); 
    _open = true;
}

当我尝试编译它(使用GCC)时,我收到以下错误:

error: no matching function for call to 'SerialPort::open(const char*, int)'

我包含了所有必需的C头。 当我更改方法的名称,例如open2时,我没有编译问题。

我怎么解决这个问题。 提前致谢。

呼叫

fd = ::open(_portName.c_str(), O_RDWR | O_NOCTTY );

函数名前面的双冒号( ::是C ++的作用域解析运算符

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

::open而不是open ::前缀表示该名称应取自全局范围。 (全局命名空间?说实话,我不确定它的确切含义......)

open (_portName.c_str(), O_RDWR | O_NOCTTY );之前添加“::” open (_portName.c_str(), O_RDWR | O_NOCTTY );

确保:

1)如果调用的函数和函数位于不同的名称空间(包括父名称空间),则使用名称空间解析

2)如果上面定义了调用函数,则调用函数在调用函数之前声明函数。 例如:

 void bar();

 void foo()
 {
  bar();
 }

void bar()
{
 ....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM