vector <bool>没有可行的超载&#39; =&#39;

时间:2017-02-11 01:36:10

标签: c++

在此代码段中,

void Graph::dfs(int s) const {
    m_Marked[s] = true;
    // ...
}

其中std::vector<bool> m_Marked;

我从编译器看到,

../Algorithms/graph.cpp:54:17: error: no viable overloaded '='
    m_Marked[s] = true;
    ~~~~~~~~~~~ ^ ~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__bit_reference:155:28: note: candidate function not viable: no known conversion from 'bool' to 'const std::__1::__bit_const_reference<std::__1::vector<bool, std::__1::allocator<bool> > >' for 1st argument
    __bit_const_reference& operator=(const __bit_const_reference& __x);

绝对不知道他的问题是什么,这看起来很基本?

TIA

1 个答案:

答案 0 :(得分:5)

您将函数定义为const,因此您承诺不会更改任何内容。赋值操作正在改变某些东西,违反了这个承诺。