0

错误

错误 C2668:“sqrt”:对重载函数 c:\program files\assimp\include\assimp\vector3.inl 的模糊调用

当我在主 cpp 文件中包含“scene.h”时发生:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
GLFWwindow* window;
#include <glm/glm.hpp>
#include <glm/gtx/transform.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>
#define MESH_FILE "cube.obj"
using namespace glm;
#include "common/shader.hpp"
#include "common/controls.hpp"

我无法理解它与什么冲突?

4

1 回答 1

1

您的 .cpp 文件中有一个命名空间using-directive :

using namespace glm;

这意味着命名空间中的所有内容都glm成为“全局”命名空间的一部分;所以你正在污染全局命名空间。

sqrt()因此,标准 C函数(位于全局命名空间中)和 your之间可能存在某种形式的冲突glm::sqrt(),后者被“提升”为全局sqrt.

您可能想要删除前面提到的命名空间 using 指令(glm::当您想要引用该命名空间中的类和函数时,只需添加命名空间前缀)。

于 2014-05-09T15:28:11.553 回答