' SQRT' :模糊调用重载函数.. \ assimp \ vector3.inl

时间:2014-05-09 15:15:17

标签: c++ opengl ambiguous assimp

错误

  

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

当我包含' scene.h'在主cpp文件中:

#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"

我无法获得与之冲突的内容?

1 个答案:

答案 0 :(得分:1)

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

using namespace glm;

这意味着glm命名空间中的所有内容都成为&#34; global&#34;的一部分。命名空间;所以你污染全局命名空间。

因此,标准C sqrt()函数(位于全局命名空间中)和glm::sqrt()之间可能存在某种形式的冲突,而sqrt是&#34;提升的&#34;全球glm::

您可能希望删除前面提到的命名空间using-directive(当您想要引用该命名空间中的类和函数时,只需添加{{1}}命名空间前缀)。