lines[newx][newy]="YES";C:\Program Files\CodeBlocks\yijvxingqiu\main.cpp|35|error: passing 'const value_type' {aka 'const std::__cxx11::basic_string<char>'} as 'this' argument discards qualifiers [-fpermissive]|
时间: 2024-04-17 09:26:45 浏览: 171
这个错误是由于你尝试修改一个常量对象引起的。根据错误消息,`lines[newx][newy]` 是一个常量对象,无法被修改。
要解决这个问题,你需要确保 `lines[newx][newy]` 是可修改的。一种方法是将 `lines` 声明为二维字符串数组,而不是常量数组。另一种方法是使用 `std::vector<std::vector<std::string>>` 来代替二维数组,并确保在修改元素之前,你正在修改的那个元素是可修改的。
以下是一个示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<std::string>> lines = {{"NO", "NO", "NO"}, {"NO", "NO", "NO"}};
int newx = 1;
int newy = 2;
if (newx >= 0 && newx < lines.size() && newy >= 0 && newy < lines[newx].size()) {
lines[newx][newy] = "YES";
}
// 输出修改后的结果
for (const auto& row : lines) {
for (const auto& element : row) {
std::cout << element << " ";
}
std::cout << std::endl;
}
return 0;
}
```
在上述示例中,我们使用了 `std::vector<std::vector<std::string>>` 来表示二维字符串数组 `lines`。我们首先声明了一个包含 `"NO"` 的二维数组,然后尝试将 `lines[newx][newy]` 修改为 `"YES"`。最后,我们输出修改后的结果。
请根据你的代码适配这个示例或提供更多相关代码,以便我可以更好地帮助你解决问题。
阅读全文