다음을 통해 공유


컴파일러 오류 C2885

업데이트: 2007년 11월

오류 메시지

'class::identifier' : 비클래스 범위의 using 선언이 잘못되었습니다.
'class::identifier' : not a valid using-declaration at non-class scope

using 선언을 잘못 사용했습니다.

예제

이 오류는 Visual C++ 2005에 대해 수행된 즉, 중첩 형식에 대해 using 선언을 더 이상 사용할 수 없으며, 중첩 형식에 대한 각 참조를 명시적으로 한정해야 하고, 형식을 네임스페이스에 배치하거나 typedef를 만들어야 한다는 컴파일러 규칙의 결과에 따라 발생할 수 있습니다. 자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항을 참조하십시오.

다음 샘플에서는 C2885 오류가 발생하는 경우를 보여 줍니다.

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

using 키워드를 클래스 멤버와 함께 사용하는 경우 C++에서는 다른 클래스(파생 클래스) 내부에 해당 멤버를 정의해야 합니다.

다음 샘플에서는 C2885 오류가 발생하는 경우를 보여 줍니다.

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