다음을 통해 공유


컴파일러 오류 C3535

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

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

이 오류를 해결하려면

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

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

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

예제

다음 예제에서는 초기화 식이 void로 평가되기 때문에 C3535가 발생합니다.

// 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 Keyword

Fundamental Types