이 코드 조각은 VC6에서 파일을 컴파일하지만 VS 2008에서는 오류가 발생합니다. 아무도 그 이유를 말할 수 있습니까? NULL (NULL에 대한 typedef 인 포인터)을 더 이상 비교할 수 없다고 생각합니다. 그런 경우 VC9에서 어떻게 비교합니까?VC6에서 VS2008로 C++ 코드를 마이그레이션 한 후 오류 C2678 - 'type'유형의 왼쪽 피연산자를 사용하는 연산자가 없습니다.
for (std::vector<aCattrBase*>::iterator iT = attrLst.begin(); iT < attrLst.end(); iT++)
{
if ((iT != NULL) && (*iT != NULL)) //Error: C2678
{
//code
}
}
오류 C2678 : 이진 '! ='타입 의 왼쪽 피연산자 소요 찾지 연산자 'STD는 :: _ Vector_iterator < _Ty는 _Alloc는>' (또는 전혀 없다 허용되는 변환)
동의. 그러나 비교의 문제점은 무엇이며이 유형의 비교를위한 대안은 무엇입니까? – bobbyalex
그것은 비교가 달성하려고하는 것에 따라 다릅니다. 가장 가까운 동등 물은 기본 생성 iterator입니다 (iterator가 포인터 인 경우 NULL이됩니다). – jalf