2014-05-09 56 views
0

錯誤'開方':不明確調用重載函數t .. assimp vector3.inl

錯誤C2668: '開方':不明確調用重載函數C:\ Program Files文件\ assimp \包括\ assimp \ vector3.inl

occures當我包括主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" 

我不能得到什麼呢抵觸?

+1

'glm'命名空間是否包含sqrt函數? –

+0

@ratchetfreak我想是的,因爲它是數學庫,但他們爲什麼會發生衝突? – RevanReborn

+0

,因爲'sqrt(var)'可以引用標準sqrt或glm一個 –

回答

1

你有一個命名空間在.cpp文件中使用指示符

using namespace glm; 

這意味着一切,這是在glm命名空間中成爲「全球性」的命名空間的一部分;所以你是污染全局命名空間。

因此,標準C sqrt()函數(位於全局名稱空間中)與glm::sqrt()之間可能存在某種形式的衝突,該函數被「提升」爲全局的sqrt

您可能希望使用-directive移除上述名稱空間(並且只需在要引用該名稱空間中的類和函數時添加glm::名稱空間前綴)即可。

相關問題