असल में मैं जो करना चाहता हूं वह अभिनेता वर्ग में एक निजी सदस्य के रूप में एक स्प्राइट की सक्रिय एनीमेशन के संदर्भ को संग्रहीत करता है। मैं एक संदर्भ का उपयोग करना चाहता हूं इसलिए मुझे वास्तव में कई बार एनीमेशन बनाने की ज़रूरत नहीं है लेकिन मुझे एक त्रुटि मिल रही है।अनियंत्रित संदर्भ सदस्य
अभिनेता वर्ग घोषणा:
class Actor
{
public:
Actor();
~Actor();
void setActiveAnimation(Animation anim);
void draw(sf::RenderWindow& win);
private:
sf::Sprite sprite;
MaJR::Animation& activeAnimation;
};
अभिनेता वर्ग कार्यान्वयन:
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();
}
बिल्ड उत्पादन:
/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 ===|
आपका विश्लेषण अच्छा है, लेकिन मैं कोड के साथ एक उत्तर को ऊपर नहीं उठा सकता जो संदर्भ द्वारा पारित पैरामीटर के पते को संग्रहीत करता है। यदि आप बाद में उपयोग के लिए पॉइंटर संग्रहीत कर रहे हैं, तो कॉलर को आजीवन विचारों के बारे में अधिक जानकारी देने के लिए, पॉइंटर पैरामीटर स्वीकार करें। –
@ बेन वोगेट: मुझे नहीं पता, मैं अपने कोड में _raw पॉइंटर्स_ का उपयोग नहीं करता हूं। –
मैं मानता हूं कि एक कच्चा सूचक स्मार्ट पॉइंटर जितना अच्छा नहीं है। लेकिन एक संदर्भ बहुत खराब है। फिक्स के लिए +1। –