C++ 按常量引用传递向量时出现Intellisense错误(但项目生成)

C++ 按常量引用传递向量时出现Intellisense错误(但项目生成),c++,reference,visual-studio-2017,constants,intellisense,C++,Reference,Visual Studio 2017,Constants,Intellisense,尝试通过常量引用传递向量时,我收到以下intellisense错误(项目构建成功): 构造函数“ObjOne::ObjOne”的实例与参数列表不匹配 参数类型有:(std::vector) 我已经在下面的最小可重复性示例中对发生错误的地方进行了评论。在visual studio 2017中,是否有解决此类问题的已知方法 #include <vector> #include <string> #include <optional> class ObjOne

尝试通过常量引用传递向量时,我收到以下intellisense错误(项目构建成功):

构造函数“ObjOne::ObjOne”的实例与参数列表不匹配
参数类型有:(std::vector)

我已经在下面的最小可重复性示例中对发生错误的地方进行了评论。在visual studio 2017中,是否有解决此类问题的已知方法

#include <vector>
#include <string>
#include <optional>

class ObjOne
{
public:
    ObjOne(const std::vector<int>& p1) {}
};

class ObjTwo
{
private:
    std::vector<int> testVec = { 1,2,3,4,5 };
    std::optional<ObjOne> optObjOne;
public:
    ObjTwo() {}
    void makeObjOne() 
    {
        this->optObjOne = ObjOne(this->testVec); // Issue arises here
    }
};


int main()
{
    auto myObjTwo = ObjTwo();
    myObjTwo.makeObjOne();

    return 0;
}
#包括
#包括
#包括
ObjOne类
{
公众:
对象(const std::vector&p1){}
};
类ObjTwo
{
私人:
向量testVec={1,2,3,4,5};
std::可选的optObjOne;
公众:
ObjTwo(){}
void makeObjOne()
{
this->optObjOne=ObjOne(this->testVec);//这里出现了问题
}
};
int main()
{
auto myObjTwo=ObjTwo();
myObjTwo.makeObjOne();
返回0;
}
通过常量引用传递向量时出现Intellisense错误(但项目 构建)

我已经在我最新的VS2017中测试了您的样本,Intellisense工作正常。所以我想知道你的VS环境和智能存在一些问题

我的环境--OS:
win10 1903
VS:
VS2017社区19.9.20

您可以尝试我的建议来解决您的问题:

建议如果您的VS2017不是最新版本,您可以将其更新为最新版本,该版本可能有更新的修复程序

1)关闭VS实例,删除
.VS
隐藏文件夹、
bin
文件夹和
obj
文件夹

2)清理C:\Users\user\AppData\Local\Microsoft\VisualStudio\15.0\uuxxxxx\ComponentModelCache下的VS组件缓存

在VS中打开项目,右键单击项目——>代码>属性< /COD> > >代码> C/C++ >代码> ->代码>语言< /代码> ->设置<代码> C++语言标准<代码> >代码> ISOC++ 17标准(/STD:C++ 17)< /C> < /P> 此外如果这些都不起作用,请尝试在VS安装程序中安装,以防Intellisense被破坏


希望它能对您有所帮助。

请将您的问题减少到最低限度。我无法亲自测试您现在显示的内容,因为代码不完整,并且我没有看到任何明显的问题(或者我忽略了它),可能是因为有太多不相关的代码。顶点.h或纹理.h标题可能有问题,因此应将这些标题添加到问题中。还要检查并确保这些标题的多个副本没有放在不同的目录中。@walnut我已经根据要求用一个
最小可复制示例更新了这个问题。抱歉没有从一开始就这么做。@whitwhoa我无法在GCC、Clang或MSVC上用您的代码重现错误,请参阅。您正在使用什么编译器和编译器选项?@walnut我正在通过visual studio 2017使用MSVC。正在使用的唯一选项是
/permissive-/GS
,我认为默认情况下启用了该选项和
/std:c++最新版本
#include <vector>
#include <string>
#include <optional>

class ObjOne
{
public:
    ObjOne(const std::vector<int>& p1) {}
};

class ObjTwo
{
private:
    std::vector<int> testVec = { 1,2,3,4,5 };
    std::optional<ObjOne> optObjOne;
public:
    ObjTwo() {}
    void makeObjOne() 
    {
        this->optObjOne = ObjOne(this->testVec); // Issue arises here
    }
};


int main()
{
    auto myObjTwo = ObjTwo();
    myObjTwo.makeObjOne();

    return 0;
}