在头文件中定义命名空间类

Posted

技术标签:

【中文标题】在头文件中定义命名空间类【英文标题】:Defning a namespace class in a header file 【发布时间】:2015-05-31 02:57:56 【问题描述】:

我遇到了与this 类似的问题,但不完全一样。

假设我们有 2 个头文件和一个 main.cpp。 在我们的第一个头文件中:

  namespace Logic
  
    class GameManager;
  

在第二个标题中:

#include "first_header.h"
class Logic::GameManager 

public : 
    void init();
    void run():
;

在 main.cpp 我有:

#include "first_header.h"
int main()

   Logic::GameManager gm;
   gm.init();
   gm.run();

在我在 main.cpp 中包含第二个标头之前,我会收到此错误:

'gm' uses undefined class 'Logic::GameManager'

-这种使用命名空间和类的方式正确吗?

-有更好的方法吗?

谢谢。

【问题讨论】:

【参考方案1】:

重新打开命名空间来定义类。

namespace Logic 

class GameManager 

public : 
    void init();
    void run():
;


并包含来自main.cpp 的第二个标头,而不是第一个标头。编译器找不到类定义,除非它直接是#include'd。

【讨论】:

以上是关于在头文件中定义命名空间类的主要内容,如果未能解决你的问题,请参考以下文章

C++不使用匿名命名空间实现内部链接

C++:命名空间——如何在头文件和源文件中正确使用?

如何使用命名空间和类?

C++ 中的头文件和命名空间

私有类函数与未命名命名空间中的函数

用于头文件中的匿名命名空间