在這裏面的代碼:不能讓一個「非const的範圍」一個const成員函數
int main(int argc, char *argv[])
{
class Bar {
public:
int bar;
};
class Foo {
public:
std::vector<Bar> myBars;
Bar &getOneBar() const {
for(Bar &bar : myBars) {
return bar;
}
}
};
}
我得到一個編譯錯誤:
error: binding ‘const main(int, char**)::Bar’ to reference of type ‘main(int, char**)::Bar&’ discards qualifiers
這我接受,但不要」不明白,因爲我沒有修改該函數中類的內容。我明白我可以在調用getOneBar()之後修改對象,但不能在裏面。
我有一個const_cast會得到解決,但我有點不喜歡這樣。
Bar &getOneBar() const {
for(Bar &bar : myBars) {
return const_cast<Bar &>(bar);
}
}
對於(Bar const&bar:myBars)'不會比鑄造好嗎? (和返回從'const'功能的非const引用似乎很奇怪我。) –
這沒有什麼區別,我得到同樣的錯誤 –