在头文件中访问名称空间似乎有问题。解释这一点的最好方法是举例:
我这样做会出现编译错误:
Game.h:
#pragma once
struct Game
{
//some other stuff here
private:
glm::mat4 projection;
};
Game.cpp:
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include "Game.h"
这是错误:
'glm' is not a class or namespace name
'projection': unknown override specifier
missing type specifier - int assumed. Note: C++ does not support default-int
然而,这样做很好:
Game.h:
#pragma once
struct Game
{
//some other stuff here
};
Game.cpp:
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include "Game.h"
glm::mat4 projection;
我感到困惑的是,虽然命名空间可以在cpp文件中运行,但在头文件中找不到命名空间。
Visual Studio认识到命名空间存在(编辑器中没有下划线),但是当我编译它时突然不存在。
答案 0 :(得分:2)
它在您的标头文件中不可用,因为您没有包含它:
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>