Професионална програма
Loading...
Smeshan avatar Smeshan 89 Точки

Forward Declaration Renderer

Здравейте,
имам едно питане защо при инклудите в Engine.h:

/* C system icnludes */

/* C++ system icnludes */
#include <cstdint>

/* Third-party icnludes */

/* Own icnludes */
#include "game/Game.h"
#include "sdl_utils/InputEvent.h"
#include "sdl_utils/Monitor.h"

/* Forward Declaration */
struct EngineConfig;
struct Renderer;

class Engine {
...

ми дава грешка по-долу при private member-a Renderer _renderer (Грешката е: incomplete type is not allowed), а:

/* C system icnludes */

/* C++ system icnludes */
#include <cstdint>

/* Third-party icnludes */

/* Own icnludes */
#include "game/Game.h"
#include "sdl_utils/InputEvent.h"
#include "sdl_utils/Monitor.h"
#include "sdl_utils/Renderer.h"

/* Forward Declaration */
struct EngineConfig;

class Engine {
..

не ми дава?
Нали в първия вариант му казвам, че това ще е структура и после вкарвам Header-a само в cpp-то?

Нещо ми избягва логиката или пропускам нещо просто (за което се извинявам ако е казвано).

Благодаря предварително,
Илиян

Тагове:
2
C++ Applications Development
MartinBG avatar MartinBG 3972 Точки
Best Answer

Forward declaration работи само ако типа се използва като пойнтър или референция, т.е. трябва да имаме Renderer* _renderer или Renderer& _renderer

1
bonev_st avatar bonev_st 11 Точки

И ако е статична променлива.

0