完整的错误信息:
Error 1 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::_List_iterator<_Mylist>' (or there is no acceptable conversion) c:\ebooks\sourcecode\programing_game_ai_by_example\buckland_sourcecode\vs8 projects\buckland_chapter3-steering behaviors\path.h 54 1 Steering
我对 [V]C++ 世界很陌生。我正在阅读通过示例书籍编程游戏 AI,并尝试研究/分析出版商网站上提供的源代码。
似乎整个源代码都是用 VS8 编写的,但我使用的是 VS12 Express 版本。项目转换似乎没有问题,预计所有项目都会收到 4 个警告(见下文)。
但问题是我遇到了一个编译错误,在我看来,我所拥有的基本知识是强类型列表的运算符重载,但我不确定它是否属实,如果它属实,我不知道如何修复它.
错误#1的代码行:
Vector2D CurrentWaypoint()const{assert(curWaypoint != NULL); return *curWaypoint;}
问题变量的声明:
std::list<Vector2D>::iterator curWaypoint;
包含构造函数的扩展代码片段:
//constructor for creating a path with initial random waypoints. MinX/Y
//& MaxX/Y define the bounding box of the path.
Path(int NumWaypoints,
double MinX,
double MinY,
double MaxX,
double MaxY,
bool looped):m_bLooped(looped)
{
CreateRandomPath(NumWaypoints, MinX, MinY, MaxX, MaxY);
curWaypoint = m_WayPoints.begin();
}
//returns the current waypoint
Vector2D CurrentWaypoint()const{assert(curWaypoint != NULL); return *curWaypoint;}
//returns true if the end of the list has been reached
bool Finished(){return !(curWaypoint != m_WayPoints.end());}
现在我不确定在此之后去哪里,但列表和迭代器定义在WindowsUtils.h文件中。
我没有粘贴相同的剩余错误,但是您可以在此处访问整个 Path.h 文件
有人可以告诉我如何解决这个问题吗?我总是害怕 c++,尤其是 vc++,但是如果有人指导我问题是什么并解决它,我可以自己修复它
错误
Error 1 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::_List_iterator<_Mylist>' (or there is no acceptable conversion) c:\ebooks\sourcecode\programing_game_ai_by_example\buckland_sourcecode\vs8 projects\buckland_chapter3-steering behaviors\path.h 54 1 Steering
Error 2 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::_List_iterator<_Mylist>' (or there is no acceptable conversion) c:\ebooks\sourcecode\programing_game_ai_by_example\buckland_sourcecode\vs8 projects\buckland_chapter3-steering behaviors\path.h 54 1 Steering
Error 3 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::_List_iterator<_Mylist>' (or there is no acceptable conversion) c:\ebooks\sourcecode\programing_game_ai_by_example\buckland_sourcecode\vs8 projects\buckland_chapter3-steering behaviors\path.h 54 1 Steering
Error 4 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::_List_iterator<_Mylist>' (or there is no acceptable conversion) c:\ebooks\sourcecode\programing_game_ai_by_example\buckland_sourcecode\vs8 projects\buckland_chapter3-steering behaviors\path.h 54 1 Steering
5 IntelliSense: no operator "!=" matches these operands
operand types are: const std::_List_iterator<std::_List_val<std::_List_simple_types<Vector2D>>> != int c:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter3-Steering Behaviors\Path.h 54 38 Steering
以防万一这很重要,下面是我为本书源代码中的每个项目保留的警告
*常见的解决方案转换警告:* (注:与上述不同的项目)
Conversion Report - WestWorld1.vcproj:
Converting project file 'C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\WestWorld1.vcproj'.
Web deployment to the local IIS server is no longer supported. The Web Deployment build tool has been removed from your project settings.
Done converting to new project file 'C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\WestWorld1.vcxproj'.
This application has been updated to include settings related to the User Account Control (UAC) feature of Windows Vista. By default, when run on Windows Vista with UAC enabled, this application is marked to run with the same privileges as the process that launched it. This marking also disables the application from running with virtualization. You can change UAC related settings from the Property Pages of the project.
VCWebServiceProxyGeneratorTool is no longer supported. The tool has been removed from your project settings.
MSB8012: $(TargetPath) ('C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\.\Debug\WestWorld1.exe') does not match the Linker's OutputFile property value '.\Debug/WestWorld1.exe' ('C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\Debug/WestWorld1.exe') in project configuration 'Debug|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Link.OutputFile).
MSB8012: $(TargetPath) ('C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\.\Release\WestWorld1.exe') does not match the Linker's OutputFile property value '.\Release/WestWorld1.exe' ('C:\eBooks\SourceCode\programing_game_ai_by_example\Buckland_SourceCode\VS8 projects\Buckland_Chapter2-State Machines\WestWorld1\Release/WestWorld1.exe') in project configuration 'Release|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Link.OutputFile).