首页 > 解决方案 > 在带有 ReSharper 的 VS 中使用 glm::vec3 时出现“不完整类型”警告

问题描述

我正在学习 OpenGL 教程,我有一个简单的 .h 文件,我在其中创建了一个构成顶点格式的结构。我在 glm::vec3 字段中收到不完整的类型错误。这是我第一次尝试使用 glm 库。你知道我错过了什么吗?

我读了一些关于不完整类型的答案,但他们似乎都在谈论递归包含,而我似乎没有。

#pragma once
#include <glm/glm.hpp>

struct VertexFormat {
    glm::vec3 position; //error here

    VertexFormat(const glm::vec3 &pos) {
        position = pos; //and here
    }
};

单词 vec3 用“类型 'glm::vec<3, float, 0>' 不完整”下划线,然后单词位置带有“不能分配给不完整的类型 'glm::vec<3, float, 0>'” "

编辑: 问题出在 IDE 中——我只是注释了代码的其他未完成部分,以便我可以编译,尝试使用 VertexFormat 编写一些代码,它编译并运行得很好(尽管仍然用红色下划线)。我正在使用带有 ReSharper Ultimate 扩展的 Visual Studio 2017。我从官方网站下载了 glm,由于 lib 只是头文件,我只是将带有头文件的 glm 文件夹复制到 /include 内的解决方案目录中,其中我还有另一个文件夹 GL,其中包含 GLEW 和 FreeGLUT(工作正常)。glm.hpp #includes 中的所有其他 glm 标头。在项目属性中,我有 $(SolutionDir)/include 作为附加的包含目录。

标签: c++visual-studio-2017resharperglm-math

解决方案


请更新到最新的 ReSharper 版本 - 最初的 2019.1 版本中存在一个可能导致此问题的错误(有关详细信息,请参阅RSCPP-26279)。


推荐阅读