Определители 'const' нельзя применять к 'std :: vector <long unsigned int> &' - PullRequest
0 голосов
/ 25 января 2019

У меня был проект c ++ 11 в Linux, где я использовал следующую подпись, которая не компилируется в 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 голосов
/ 25 января 2019

const находится не в том месте.Это должно быть const std::vector<size_t>& elementIds.
Это означает, что функция не может измениться elementIds.

То же самое относится и к map.
Это должно быть const std::map<long unsigned int, long unsigned int>& mapElementIdToGlobalIndex

Где const помещен в OP, помечает ссылку как const.Поскольку ссылки не могут быть изменены в любом случае, нет необходимости делать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...