Compilerfehler C2885

'Klasse::Bezeichner': Keine gültige using-Deklaration im Gültigkeitsbereich der Nichtklasse.

Eine using-Deklaration wurde nicht ordnungsgemäß verwendet.

Beispiel

Dieser Fehler kann infolge einer Verbesserung der Compilerkonformität für Visual C++ 2005 generiert werden: Es ist nicht mehr zulässig, eine using-Deklaration zu verwenden, die sich auf einen geschachtelten Typ bezieht. Sie müssen jeden Verweis auf den verschachtelten Typ explizit qualifizieren, den Typ in einem Namespace ablegen oder eine Typdefinition erstellen.

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 Klassenmember verwenden, ist es in C++ erforderlich, dass dieser Member innerhalb einer anderen (abgeleiteten) Klasse definiert wird.

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