我在linux上有一个c ++ 11项目,在其中使用了以下签名,该签名无法在linux上编译,但可以在Windows上编译
错误:
error: 'const' qualifiers cannot be applied to 'std::vector<long unsigned int>&'
error: 'const' qualifiers cannot be applied to 'std::map<long unsigned int, long unsigned int>&'
功能是
bool debugGlobalDs(std::vector<size_t> & const elementIds ,
std::map<long unsigned int, long unsigned int>& const mapElementIdToGlobalIndex)
{
....
return true
}
为什么我不能在这里使用const限定词?一旦删除它,它在Linux上也可以正常编译。
答案 0 :(得分:1)
Grouping
放在错误的位置。应该是const
。
这意味着该函数不允许更改const std::vector<size_t>& elementIds
。
elementIds
也是如此。
应该是map
将const std::map<long unsigned int, long unsigned int>& mapElementIdToGlobalIndex
放在OP中的位置将引用标记为const
。由于无论如何都无法更改引用,因此无需这样做。