Megosztás a következőn keresztül:


C2885-ös fordítási hiba

"class::identifier" : nem érvényes használatdeklaráció nem osztály hatókörben

Megjegyzések

Helytelenül használt egy using deklarációt.

Ez a hiba a Visual Studio 2005-höz készült fordítómegfelelőség-munka eredményeként hozható létre: már nem érvényes using a beágyazott típusra vonatkozó deklaráció; explicit módon kell minősítenie a beágyazott típusra vonatkozó összes hivatkozást, el kell helyeznie a típust egy névtérben, vagy létre kell hoznia egy típusdefet.

Példák

Az alábbi példa C2885-öt hoz létre.

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

Ha a using kulcsszót egy osztálytaggal használja, a C++ megköveteli, hogy ezt a tagot egy másik osztályban (származtatott osztályban) definiálja.

Az alábbi példa C2885-öt hoz létre.

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