calling a global function with a class method with

2019-01-22 17:56发布

I would like to wrap a C library within a C++ class. For my C++ class I also would like to have the same declaration used by these C function: is it possible to do that?

If for example I have the case below how would it be possible to distinguish the C-function from the C++ one? I would like to call the C one off course.

 extern int my_foo( int val ); //

 class MyClass{
    public:
    int my_foo( int val ){
           // what to write here to use
           // the C functions?
           // If I call my_foo(val) it will call
           // the class function not the global one
    }
 }

标签: c++ gcc wrapping
3条回答
霸刀☆藐视天下
2楼-- · 2019-01-22 18:35

Use the scope resolution operator :::

int my_foo( int val ){
    // Call the global function 'my_foo'
    return ::my_foo(val);
}
查看更多
三岁会撩人
3楼-- · 2019-01-22 18:36

Use Qualified name lookup

::my_foo(val);

This tells the compiler you want to call the global function and not the local function.

查看更多
仙女界的扛把子
4楼-- · 2019-01-22 18:47
::my_foo(val);

that should do it.

查看更多
登录 后发表回答