ich die nächste Klasse:Mit Bezugsgrößen oder sie senden als Funktionsparameter
class State {
public:
State(StateMachine& machine, sf::RenderWindow& window)
: mMachine { machine }
, mWindow { window } { }
void draw();
protected:
StateMachine& mMachine;
sf::RenderWindow& mWindow;
std::vector<std::unique_ptr<Scene>> m_scenes;
};
In der Auslosung Funktion ich den Vektor m_scenes
und rufen Sie die Funktion drawScene()
laufen, aber die Szene Klasse brauchen eine sf::RenderWindow
, um zeichnen.
Sollte ich die mWindow
beim Erstellen einer neuen Szene senden?
class Scene {
public:
Scene(sf::RenderWindow& window)
: mWindow { window } { }
void drawScene() {
mWindow.draw(...);
}
protected:
sf::RenderWindow& mWindow;
};
Oder wäre es besser, die mWindow
als Paramater zu schicken?
class Scene {
public:
Scene() {}
void drawScene(sf::RenderWindow& window) {
window.draw(...);
}
};
Oder sollte ich eine Getter in der Klasse State
und eine Referenz für die State
Klasse schicken?
class State {
public:
State(...);
sf::RenderWindow& getWindow() { return mWindow; }
};
class Scene {
public:
Scene(State& state)
: mState { state } {}
void drawScene() {
mState.getWindow().draw(...);
}
protected:
State& mState;
};
Und wenn ich einen Getter verwende, wird es den Code verlangsamen?
Tun Sie einfach, was Sie bevorzugen. Ein Getter wird Ihr Programm nicht verlangsamen. –