вызов глобальной функции с методом класса с тем же объявлением - PullRequest
29 голосов
/ 22 августа 2011

Я хотел бы обернуть библиотеку C в класс C ++. Для моего класса C ++ я также хотел бы иметь то же объявление, используемое этими функциями C: возможно ли это сделать?

Если, например, у меня есть случай ниже, как можно было бы отличить функцию C от функции C ++? Я хотел бы позвонить на один раз с курса.

 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
    }
 }

Ответы [ 3 ]

49 голосов
/ 22 августа 2011

Используйте оператор разрешения области действия :::

int my_foo( int val ){
    // Call the global function 'my_foo'
    return ::my_foo(val);
}
6 голосов
/ 22 августа 2011

Использование Поиск квалифицированного имени

::my_foo(val);

Это говорит компилятору, что вы хотите вызывать глобальную функцию, а не локальную функцию.

5 голосов
/ 22 августа 2011
::my_foo(val);

это должно сделать.

...