Можно ли использовать объявление «using» для статической функции класса [C ++]? - PullRequest
5 голосов
/ 22 августа 2009

Это законно?



class SomeClass {
public:
  static void f();
};

using SomeClass::f;

Редактировать: я забыл уточнить функцию. Сожалею.

Ответы [ 2 ]

3 голосов
/ 22 августа 2009

Нет, это не так. Ключевое слово using используется для переноса одного или всех членов из пространства имен в глобальное пространство имен, чтобы к ним можно было обращаться без указания имени пространства имен каждый раз, когда мы используем члены.

В приведенном вами операторе использования имя пространства имен не указывается. Даже если вы предоставили в SomeClass оператор типа using SomeClass::f;, он не будет работать, поскольку SomeClass не является пространством имен.

Надеюсь, это поможет.

2 голосов
/ 22 августа 2009

Я думаю, что using x; обычно используется внутри класса для переноса имен методов из базового класса в область видимости, чтобы избежать сокрытия методов базового класса.

Возможно, вы думаете о using namespace name;, который относится только к пространствам имен.

Вам может быть лучше с простой встроенной функцией:

void f(){ SomeClass::f(); }
...