从头文件中的命名空间访问类型

时间:2018-04-07 09:48:09

标签: c++

在头文件中访问名称空间似乎有问题。解释这一点的最好方法是举例:

我这样做会出现编译错误:

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认识到命名空间存在(编辑器中没有下划线),但是当我编译它时突然不存在。

1 个答案:

答案 0 :(得分:2)

它在您的标头文件中不可用,因为您没有包含它:

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>