컴파일러 경고(수준 1) C4927
변환이 잘못되었습니다. 사용자 정의 변환이 암시적으로 두 번 이상 적용되었습니다.
둘 이상의 사용자 정의 변환이 단일 값에 암시적으로 적용됩니다. 컴파일러는 명시적 변환을 찾지 못했지만 사용한 변환을 찾았습니다.
다음 샘플에서는 C4927을 생성합니다.
// C4927.cpp
// compile with: /W1
struct B
{
operator int ()
{
return 0;
}
};
struct A
{
A(int i)
{
}
/*
// uncomment this constructor to resolve
A(B b)
{
}
*/
};
A f1( B& b)
{
return A(b);
}
B& f2( B& b)
{
return b;
}
A f()
{
B b;
return A(b); // ok
return f1(b); // ok
return b; // C4927
return B(b); // C4927
return f2(b); // C4927
}
int main()
{
B b;
A a = b;
A a2(b);
}