다음을 통해 공유


컴파일러 오류 C2061

구문 오류: 식별자 'identifier'

컴파일러가 예상하지 못한 식별자를 찾았습니다. 사용하기 전에 선언되어 있는지 확인 identifier 합니다.

이니셜라이저는 괄호로 묶을 수 있습니다. 이 문제를 방지하려면 선언자를 괄호로 묶거나 괄호로 typedef만듭니다.

컴파일러가 식을 클래스 템플릿 인수로 검색할 때도 이 오류가 발생할 수 있습니다. 다음 예제와 같이 typename을 사용하여 컴파일러에 형식임을 알릴 수 있습니다.

다음 샘플에서는 C2061을 생성합니다.

// C2061.cpp
// compile with: /std:c++17

template <A a> // C2061
class C1 {};

template <typename A a> // ok
class C2 {};

template <typename T>
class C3
{
   // Both are valid since C++20
   using Type1 = T::Type; // C2061
   using Type2 = typename T::Type; // OK
};

int main()
{
   int x;
   unsigned a1 = alignof(x);   // C2061
   unsigned a2 = alignof(int); // OK
   unsigned a3 = alignof(decltype(x)); // OK
}

다음을 사용하여 오류를 template<A a> class C1{};해결하려면 template <typename a> class C1 {};
를 사용하여 문제를 using Type1 = T::Type;해결하려면 using Type1 = typename T::Type;
이 문제를 alignof(x)해결하려면 인수를 .의 x형식으로 바꿉다. 이 경우 또는 intdecltype(x);

인스턴스 이름을 typeid에 전달하는 경우 C2061이 발생할 수 있습니다.

// C2061b.cpp
// compile with: /clr
ref struct G
{
   int i;
};

int main()
{
   G ^pG = gcnew G;
   System::Type ^ pType = typeid<pG>;   // C2061
   System::Type ^ pType2 = typeid<G>;   // OK
}