【发布时间】:2019-01-29 05:01:28
【问题描述】:
我正在使用前向声明,并且我已经小心不要在头文件中进行任何定义(仅声明),并且在每个头文件之前都有#pragma once 指令。然而,不知何故,多重定义错误仍在发生。所以在 GlobalSys.h 中,我使用前向声明,然后我将把这个文件包含到任何需要访问这个全局变量的文件中。在 application.h 中,我初始化了这个全局变量,所以我必须包含 EventManager.h,否则编译器会报错。我哪里做错了?
GlobalSys.h
#pragma once
class EventManager;
namespace GlobalSys {
EventManager * eventManager;
}
应用程序.h
#include "GlobalSys.h"
#include "../Event/EventManager.h"
class Application {
public:
Application();
};
应用程序.cpp
#include "Application.h"
Application::Application() {
GlobalSys::eventManager = new EventManager();
}
【问题讨论】:
标签: c++ declaration definition