zeb*_*und 0 c++ compiler-errors
给出以下两个头文件:
#ifndef EVENT_HANDLER_H
#define EVENT_HANDLER_H
#include <SFML/Window.hpp>
#include <SFML/Window/Event.hpp>
#include "window_handler.h"
class EventHandler
{
public:
EventHandler(WindowHandler & classOwner);
WindowHandler * m_windowHandler;
private:
bool m_leftKeyDown;
bool m_rightKeyDown;
bool m_upKeyDown;
bool m_downKeyDown;
unsigned int m_mouseX;
unsigned int m_mouseY;
};
#endif
Run Code Online (Sandbox Code Playgroud)
和
#ifndef WINDOW_HANDLER_H
#define WINDOW_HANDLER_H
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include "event_handler.h"
class WindowHandler
{
public:
WindowHandler();
sf::Window m_app;
private:
EventHandler m_eventHandler;
};
#endif
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
In file included from window_handler.h:6:0,
from main.cpp:3:
event_handler.h:13:29: error: expected ‘)’ before ‘&’ token
event_handler.h:15:2: error: ‘WindowHandler’ does not name a type
Run Code Online (Sandbox Code Playgroud)
据我所知,我做的一切都很完美.我在这里错过了什么吗?
你有一个循环依赖.
当你定义了window_handler.h包含但实际上没有达到定义类的位置时.当试图包括它不是因为event_handler.hWINDOW_HANDLER_Hevent_handler.hwindow_handler.hWINDOW_HANDLER_H
如上所述,您需要event_handler.h通过删除include 来转发声明window_handler.h并将其替换为:
class WindowHandler;
Run Code Online (Sandbox Code Playgroud)