bool image_manager::contains_image(const std::string& filename)
{
return this->map_.count(filename);
}
지금 내가 얻을 경고는 다음과 같습니다 std::map
의 개수의 반환 형식은() 메소드는 MSVC에서이 경고가 나타나는 이유는 무엇입니까?
warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning)
입니다
그러나 이후 :1 개에 해당하는 키를 가진 요소 인 경우, 찾았거나 그렇지 않으면 0입니다.
따라서 부울처럼 사용할 수 있습니다. 그러면 왜 내가 정확히이 경고를 받게됩니까? C++에서 정수는 기본적으로 부울 검사에 사용할 수 있습니다. 그러므로 0 == false
및 1 == true
. 그렇다면 왜 컴파일러가 경고를 던지나요? 나는 또한이 같은 static_cast
사용하여 시도 :
return static_cast<bool>(this->map_.count(filename));
을하지만, 난 여전히 경고를 받고 있어요.
지금은 _why_가 아니지만 체크 ('return map_.count (filename)! = 0;')로 경고를 제거 할 수 있습니다. –
나는 그들의 bool이 int만큼 잘 수행되지 않는다고 생각한다. – chris
@ chris하지만 '부울'은 단지 enum이나'typedef'ed int라고 생각했습니다. 'enum bool (false = 0, true = 1);과 같은 것; – ApprenticeHacker