Error del compilador C2885

Actualización: noviembre 2007

Mensaje de error

'clase::identificador' : no es una declaración using válida en un ámbito de no clase
'class::identifier' : not a valid using-declaration at non-class scope

Se ha utilizado una declaración using incorrectamente.

Este error se puede generar como resultado del trabajo de conformidad del compilador realizado para Visual C++ 2005: ya no es válido tener una declaración using a un tipo anidado; debe calificar explícitamente cada referencia realizada al tipo anidado, incluir el tipo en un espacio de nombres o crear una definición de tipos (typedef). Vea Cambios importantes en el compilador de Visual C++ 2005 para obtener más información.

El ejemplo siguiente genera el error C2885.

// C2885.cpp
namespace MyNamespace {
   class X1 {};
}

struct MyStruct {
   struct X1 {
      int i;
   };
};

int main () {
   using MyStruct::X1;   // C2885

   // OK
   using MyNamespace::X1;
   X1 myX1;

   MyStruct::X1 X12;

   typedef MyStruct::X1 abc;
   abc X13;
   X13.i = 9;
}

Si utiliza la palabra clave using con un miembro de clase, C++ necesita que defina el miembro dentro de otra clase (una clase derivada).

El ejemplo siguiente genera el error C2885.

// C2885_b.cpp
// compile with: /c
class A {
public:
   int i;
};

void z() {
   using A::i;   // C2885 not in a class
}

class B : public A {
public:
   using A::i;
};

Adiciones de comunidad

Mostrar: