gpt4 book ai didi

c++ - ISO C++ 禁止声明没有自动迭代器类型的 ‘it’?

转载 作者:太空狗 更新时间:2023-10-29 23:46:06 25 4
gpt4 key购买 nike

我有这六行:

    auto it = rcp_amxinfo.find(LocalPass.script);//175
if (it != rcp_amxinfo.end()) //176
{//177
if(it->second.GPSRouteCalculated.PublicFound)//178
{
...
amx_Exec(LocalPass.script, NULL, it->second.GPSRouteCalculated.POINTER);//186

它们在 VS2012 中编译得很好,但在 centOS6 上的 GCC 中我得到这些错误:

./RouteConnector/main.cpp:175: error: ISO C++ forbids declaration of ‘it’ with no type
./RouteConnector/main.cpp:175: error: cannot convert ‘std::_Rb_tree_iterator<std::pair<AMX* const, Callbacks> >’ to ‘int’ in initialization
./RouteConnector/main.cpp:176: error: no match for ‘operator!=’ in ‘it != rcp_amxinfo.std::map<_Key, _Tp, _Compare, _Alloc>::end [with _Key = AMX*, _Tp = Callbacks, _Compare = std::less<AMX*>, _Alloc = std::allocator<std::pair<AMX* const, Callbacks> >]()’
./RouteConnector/main.cpp:178: error: base operand of ‘->’ is not a pointer
./RouteConnector/main.cpp:186: error: base operand of ‘->’ is not a pointer

rcp_amxinfo 定义如下:

struct CallbackAMX
{
bool PublicFound;
int POINTER;
CallbackAMX()
{
PublicFound = false;
POINTER = 0;
}
};

struct Callbacks
{
CallbackAMX ClosestNodeIDChange;
CallbackAMX GPSRouteCalculated;
};

std::map <AMX*, Callbacks> rcp_amxinfo;

如何在 Linux 上解决这些错误?

最佳答案

构建时启用 C++11 模式。您可以通过添加 -std=gnu++11(也可以获取默认启用的 GCC 扩展)或 -std=c++11(对于only ISO C++) 到你的编译器标志。

auto 在 C++11 中的含义(它推导类型)与它在以前的标准中的含义(它指定自动存储类)不同。

关于c++ - ISO C++ 禁止声明没有自动迭代器类型的 ‘it’?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13774514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com