Это законный?Можно ли использовать объявление 'using' для функции статического класса [C++]?
class SomeClass {
public:
static void f();
};
using SomeClass::f;
Редактировать: Я забыл квалифицировать функцию. Сожалею.
Это законный?Можно ли использовать объявление 'using' для функции статического класса [C++]?
class SomeClass {
public:
static void f();
};
using SomeClass::f;
Редактировать: Я забыл квалифицировать функцию. Сожалею.
Нет, это не так. Ключевое слово using используется для переноса одного или всех членов из пространства имен в глобальное пространство имен, чтобы к ним можно было обращаться без указания имени пространства имен каждый раз, когда мы используем члены.
В приведенной инструкции использования имя пространства имен не предоставляется. Даже если вы предоставили SomeClass там также заявление вроде using SomeClass::f;
, оно не будет работать, потому что SomeClass не является пространством имен.
Надеюсь, это поможет.
Вы можете вводить имена в любое пространство имен, а не только глобальное. Вы * можете * использовать 'using' в функции-члене, но только в производном классе. – avakar
Я думаю, что using x;
обычно используется внутри класса, чтобы приносить имена методов из базового класса в область видимости, чтобы избежать скрытия методов базового класса.
Возможно, вы думаете о using namespace name;
, который применяется только к пространствам имен.
Вы можете быть лучше с простой функцией в линии:
void f(){ SomeClass::f(); }
Думаю, я использую твой трюк. –
+1, чтобы противодействовать смешную downvote. – avakar