Reversed contact between classes [help]

So I've been having this uncertainty for a long time about my way of doing the rendering. So the game engine has objects and drawer classes, in order to render an object, the object needs to call engine's drawer class. My solution for this is every object needs to have a pointer to the engine. Is this a good solution? Is there any better? Thanks. Here is the code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Engine;

class Object {

Engine *engine_;

public:

    Object(Engine *engine) : engine_(engine) {}

    void draw() {
        engine_->drawer_->draw(this);
    }

};

class Drawer {

public:

    void draw(Object *object);

};

class Engine {

public:

    Drawer drawer_;
    Object object_;

    Engine() : object_(this) {}

};

int main() {

    Engine engine;
    engine.object_.draw();

    return 0;
}
Last edited on
Topic archived. No new replies allowed.