Delen via


Compilerfout C2885

'klasse::id': geen geldige using-verklaring buiten het klassebereik

Opmerkingen

U hebt een using-verklaring onjuist gebruikt.

Deze fout kan worden gegenereerd als gevolg van het werk van de compilercompformance dat is uitgevoerd voor Visual Studio 2005: het is niet langer geldig om een using declaratie voor een genest type te hebben. U moet elke verwijzing die u maakt naar het geneste type expliciet kwalificeren, het type in een naamruimte plaatsen of een typedef maken.

Voorbeelden

In het volgende voorbeeld wordt C2885 gegenereerd.

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

Als u het using trefwoord met een klasselid gebruikt, moet u dat lid definiƫren in een andere klasse (een afgeleide klasse).

In het volgende voorbeeld wordt C2885 gegenereerd.

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