Compilerfehler C2885
Aktualisiert: November 2007
Fehlermeldung
'Klasse::Bezeichner': Keine gültige using-Deklaration im Gültigkeitsbereich der Nichtklasse.
'class::identifier' : not a valid using-declaration at non-class scope
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 und genau angeben, den Typ im Namespace ablegen oder eine Typdefinition erstellen. Weitere Informationen finden Sie unter Wichtige Änderungen im Visual C++ 2005-Compiler.
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;
};