C++ Extern Class Declaration

后端 未结 3 1541
有刺的猬
有刺的猬 2020-12-10 17:59

Edit: Ok I wrote a little test program to show here. Here is the Source Code.

main.cpp:

#include \"core.h\"

Core core;

int main()
{
  core.coreFunc         


        
3条回答
  •  死守一世寂寞
    2020-12-10 18:36

    You are including the window.h header before the "extern Core core;" line. Try adding that line just before the class Window line on the window.h header:

    window.h

    #ifndef WINDOW_H__
    #define WINDOW_H__
    
    extern Core core;
    
    class Window
    {...}
    

    Instead of using Core as a global variable, you can move core as a static member of the Core class. This is called the Singleton pattern.

    main.cpp

    #include "core.h"
    
    int main()
    {
      Core* core = Core::getInstance();
    
      core->coreFunction();
    }
    

    core.h

    #include "window.h"
    
    class Core
    {
    public:
      static Core* getInstance() { return &coreInstance; }
      void someFunction();
    
    private:
      static Core coreInstance;
      Window window;
    };
    

    core.cpp

    #include "core.h"
    
    Core Core::coreInstance;
    
    void Core::someFunction()
    {
      window.doSomething();
    }
    

    window.h

    class Window
    {
      void someFunction();
    };
    

    window.cpp

    #include "window.h"
    #include "core.h"
    
    void Window::someFunction()
    {
      Core* core = Core::getInstance();
    
      core->doSomething();
    }
    

提交回复
热议问题