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
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();
}