Aracılığıyla paylaş


Derleyici Hatası C2885

'class::identifier' : sınıf dışı kapsamda geçerli bir using-declaration değil

Açıklamalar

Bir using bildirimini yanlış kullandınız.

Bu hata, Visual Studio 2005 için yapılan derleyici uyumluluğu çalışmasının sonucu olarak oluşturulabilir: iç içe bir türe bildirim almak using artık geçerli değildir; iç içe türüne yaptığınız her başvuruyu açıkça nitelemeli, türü bir ad alanına yerleştirmeli veya bir tür tanımı oluşturmalısınız.

Örnekler

Aşağıdaki örnek C2885 oluşturur.

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

Anahtar sözcüğünü using bir sınıf üyesiyle kullanırsanız, C++ bu üyeyi başka bir sınıf içinde (türetilmiş bir sınıf) tanımlamanızı gerektirir.

Aşağıdaki örnek C2885 oluşturur.

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