다음을 통해 공유


컴파일러 오류 C3535

는 'type2'에서 'type1'의 형식을 추론할 수 없습니다.

키워드(keyword) 선언된 auto 변수의 형식은 초기화 식의 형식에서 추론할 수 없습니다. 예를 들어 이 오류는 초기화 식이 형식이 아닌 것으로 void평가되는 경우에 발생합니다.

이 오류를 해결하려면

  1. 초기화 식의 형식이 아닌지 void확인합니다.

  2. 선언이 기본 형식에 대한 포인터가 아닌지 확인합니다. 자세한 내용은 기본 형식을 참조 하세요.

  3. 선언이 형식에 대한 포인터인 경우 초기화 식이 포인터 형식인지 확인합니다.

예제

다음 예제에서는 초기화 식이 계산되므로 C3535를 void생성합니다.

// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
   auto x = f();   //C3535
   return 0;
}

다음 예제에서는 문이 변수 x 를 추론된 형식에 대한 포인터로 선언하지만 이니셜라이저 식의 형식은 double이므로 C3535를 생성합니다. 따라서 컴파일러는 변수의 형식을 추론할 수 없습니다.

// C3535b.cpp
// Compile with /Zc:auto
int main()
{
   auto* x = 123.0;   // C3535
   return 0;
}

다음 예제에서는 변수 p 가 추론된 형식에 대한 포인터를 선언하지만 초기화 식은 포인터 형식이 아니므로 C3535를 생성합니다.

// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x;  // C3535

참고 항목

auto 키워드
기본 형식