Básicamente lo que quiero hacer es almacenar la referencia a la animación activa de un elemento como miembro privado en la clase Actor. Quiero usar una referencia, así que no tengo que crear la animación muchas veces, pero sigo recibiendo un error.Miembro de referencia no inicializado
Actor declaración de la clase:
class Actor
{
public:
Actor();
~Actor();
void setActiveAnimation(Animation anim);
void draw(sf::RenderWindow& win);
private:
sf::Sprite sprite;
MaJR::Animation& activeAnimation;
};
implementación de la clase Actor:
Actor::Actor()
{
// constructor
}
Actor::~Actor()
{
// destructor
}
void Actor::setActiveAnimation(Animation anim)
{
activeAnimation = anim;
activeAnimation.gotoStart();
}
void Actor::draw(sf::RenderWindow& win)
{
sprite.setTexture(activeAnimation.getActiveFrame());
win.draw(sprite);
activeAnimation.nextFrame();
}
resultados de generación:
/home/mike/MaJR Game Engine/src/Actor.cpp||In constructor 'MaJR::Actor::Actor()':|
/home/mike/MaJR Game Engine/src/Actor.cpp|8|error: uninitialized reference member 'MaJR::Actor::activeAnimation' [-fpermissive]|
||=== Build finished: 1 errors, 0 warnings ===|
Su análisis es bueno, pero no puedo respaldar una respuesta con código que almacena la dirección de un parámetro pasado por referencia. Si está almacenando un puntero para usarlo más adelante, acepte un parámetro de puntero para que la persona que llama esté más al tanto de las consideraciones de la vida útil. –
@Ben Voigt: No lo sé, no uso _raw puninters_ en mi código. –
Acepto que un puntero sin formato no es tan bueno como un puntero inteligente. Pero una referencia es mucho peor. +1 para la solución. –