Errore del compilatore C2885
'class::identifier': non una dichiarazione using valida nell'ambito non di classe
È stata usata una dichiarazione using in modo non corretto.
Questo errore può essere generato in seguito al lavoro di conformità del compilatore eseguito per Visual Studio 2005: non è più valido avere una using
dichiarazione per un tipo annidato. È necessario qualificare in modo esplicito ogni riferimento eseguito al tipo annidato, inserire il tipo in uno spazio dei nomi o creare un typedef.
Esempi
L'esempio seguente genera l'errore 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;
}
Se si usa la using
parola chiave con un membro della classe, C++ richiede di definire tale membro all'interno di un'altra classe (una classe derivata).
L'esempio seguente genera l'errore 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;
};