Teilen über


Compilerfehler C2885

'class::identifier': keine gültige Using-Deklaration im Nicht-Klassenbereich

Bemerkungen

Sie haben eine Deklaration falsch verwendet.

Dieser Fehler kann als Ergebnis der Compilerkonformität generiert werden, die für Visual Studio 2005 ausgeführt wurde: Es ist nicht mehr gültig, eine using Deklaration für einen geschachtelten Typ zu haben. Sie müssen jeden Verweis explizit qualifizieren, den Sie an den geschachtelten Typ vornehmen, den Typ in einen Namespace setzen oder einen Typedef erstellen.

Beispiele

Im folgenden Beispiel wird C2885 generiert.

// 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;
}

Wenn Sie das using Schlüsselwort mit einem Klassenmemmemm verwenden, müssen Sie dieses Element innerhalb einer anderen Klasse (eine abgeleitete Klasse) definieren.

Im folgenden Beispiel wird C2885 generiert.

// 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;
};