Usted debe ser capaz de utilizar los alias de espacio de nombres para la clase:
using B = A::B;
Sin embargo no se puede hacer eso con la función miembro, ni siquiera con métodos estáticos.
Editar: De acuerdo con esta this SO answer (What is the difference between 'typedef' and 'using' in C++11) debe ser válido, y de hecho crea un alias de tipo de la misma manera que lo hace typedef
. Sin embargo, solo es C++ 11.
Hay una solución para las funciones miembro estáticas en C++ 11, declarando una variable apuntando a la función estática:
struct Foo
{
static void bar()
{ }
};
auto bar = Foo::bar;
Editar: Por supuesto, tener una variable global que apunta a una función de miembro estático también es posible en el estándar anterior de C++, pero es más complicado que usar la palabra clave auto
de C++ 11. En el ejemplo anterior, sería:
void (*bar)() = Foo::bar;
¿El error de compilación fue "error: 'A' no es un espacio de nombres"? – Johnsyweb
No puede hacer eso para 'A :: f()'. – iammilind
@iammilind pero puede lograr ese comportamiento con una solución alternativa. –