Error del compilador C2885
'clase::identificador': no es una declaración using válida en un ámbito de no clase
Ha usado una declaración "using" incorrectamente.
Este error puede deberse a una operación de conformidad del compilador para Visual Studio 2005: ya no se puede tener una declaración using
en un tipo anidado; debe calificar explícitamente cada referencia que haga al tipo anidado, poner el tipo en un espacio de nombres o crear una definición de tipo.
Ejemplos
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 usa la palabra clave using
con un miembro de clase, C++ requiere que defina ese miembro dentro de otra 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;
};