我已经尝试了大多数关于误报的类似问题所说的方法:删除.idea文件夹(甚至是~.gradle),退出项目,重新加载,使缓存无效&;重新启动,等等。 我还运行了刷新c++链接库,以备不时之需。
现在只是一个背景:我的整个项目在IDE的lint检查器上是正常的。 所有文件都显示了适当的警告等。 除了我c++方面的这一行。 (我将显示整个方法的上下文)。 我可以很好地构建和运行我的项目,当我甚至调用应用程序的这个逻辑部分时,它的行为与预期一样,没有任何问题。
// Header (relevant member variable)
class MyClass {
private:
std::vector<std::vector<int>> mArrayOfFooBars
}
// MyClass.cpp
void MyClass::updateModel(int index, const std::vector<int>& fooBars) {
this->mArrayOfFooBars[index].assign(fooBars.begin(), fooBars.end());
doMoreCalculations();
}
在Android Studio中 foobars.begin()
和 fooBars.end()
导致以下错误。
参数类型不匹配。"const int "和 "std::vector>:const_iterator "类型不兼容。
参数类型不匹配。"unsigned int "和 "const int "以及 "std::vector>:const_iterator "类型不兼容。
这让我想到可能是linter出了问题,也可能是我的编译器设置有问题,其实这应该是编译器的错误。 不管是哪种方式,我都会试着提供尽可能多的设置,因为我觉得是相关的,希望有人能提供一些有用的建议。
我检查了我的linter设置(检查),没有发现任何错误级别的检查。
我只能想到这些了,我会继续正常开发,但它的存在让我很困扰。 所以,如果能帮助我消除这个流氓错误,我将感激不尽!
IDE中的错误没有显示为构建的一部分,这在Android Studio中并不罕见。构建和IDE使用的工具链不一样。旧版本的Studio使用CLion的C++解析器,这经常是错误的,因为解析C++是出了名的困难。新版本开始使用clangd,但它不一定和构建使用的Clang是同一个版本。
当你看到这样的问题时,有可能在AS的新版本中会更好,但通常值得提交一个bug,以确保它在某人的雷达上。