【问题标题】:Defning a namespace class in a header file在头文件中定义命名空间类
【发布时间】:2026-02-13 18:55:01
【问题描述】:

我遇到了与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'

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

-有更好的方法吗?

谢谢。

【问题讨论】:

    标签: c++ class namespaces


    【解决方案1】:

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

    namespace Logic {
    
    class GameManager 
    {
    public : 
        void init();
        void run():
    };
    
    }
    

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

    【讨论】: