다음 코드 형 변환을 용이하게 추가 또는 괄호를 사용하여 곱셈의 순서를 변경함으로써 해결 될 수여기에서 왜 형 변환이 작동하지 않습니까?
#define IMG_I (std::complex<double>(0, 1))
#define PI 3.1415926535
for (unsigned long int j = 0; j < 10; ++j)
std::cout << exp(-IMG_I * PI * j);
캐스팅 입력 오류를 갖는다. 그러나 왜 타입 캐스팅 문제가 처음부터 발생하고 왜 C++이 위 코드를 그대로 처리 할 수 없는지는 분명하지 않습니다.
누구든지 나를 설명 할 수 있습니까? 템플릿의 순서를
template<typename T>
complex<T> operator*(const complex<T>& lhs, const T& val);
가 lhs
인수 complex<T>
의 T
가 val
인수의 T
과 동일해야합니다 :
오류가 발생하는 경우는 어떻습니까? 나는 컴파일러가 '- (std :: complex (0, 1))'문제가있을 수 있다고 의심하지만, 오류 메시지 없이는 말하기가 어렵다. –
tloach
왜 'const std :: complex'를 사용하지 않는가? IMG_I (0, 1); –
매크로가 호환되지 않는 유형에 대한 암시 적 캐스팅 중 일부를 숨기고 있습니다 ... – AJG85