'const'限定词不能应用于'std :: vector <long unsigned =“” int =“”>&'

时间:2019-01-25 04:50:27

标签: c++11 const

我在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上也可以正常编译。

1 个答案:

答案 0 :(得分:1)

Grouping放在错误的位置。应该是const
这意味着该函数不允许更改const std::vector<size_t>& elementIds

elementIds也是如此。
应该是map

const std::map<long unsigned int, long unsigned int>& mapElementIdToGlobalIndex放在OP中的位置将引用标记为const。由于无论如何都无法更改引用,因此无需这样做。