انتباہ: مقامی متغیر کا حوالہ دیا گیا 'عارضی' لوٹا [-Wreturn-local-addr]

Warning Reference Local Variable Temp Returned



جب میں C ++ میں پروگرام کر رہا تھا تو ، مجھے سامنا کرنا پڑا | _ _ _ _ | غلطی۔

یہ سورس کوڈ ہے جہاں میں غلط ہوگیا تھا۔

warning: reference to local variable ‘temp’ returned [-Wreturn-local-addr]

حل: تبدیلی #include using namespace std class Date { int d, m, y public: Date(int dd = 0, int mm = 0, int yy = 0) : d(dd), m(mm), y(yy) {} Date(const Date &in) : d(in.d), m(in.m), y(in.y) {} void Print() { cout << d << '/' << m << '/' << y << endl } Date &operator++(int a) { Date temp = *this cout << 'call here1 ' << a << endl this->d++ return temp//right here. } Date operator++() { cout << 'call here2 ' << endl this->d++ return *this } } int main() { Date d(14, 3, 2014) Date d1 = d++ Date d2 = ++d d1.Print() d2.Print() d.Print() } تو Date &operator++(int a) بس کریں ، ڈالیں۔ _ + _ | بس اسے حذف کریں۔



وجہ: اصل کوڈ میں ، حوالہ دیا ہوا علامت Date operator++(int a) اس سے مراد یہ ہے کہ فنکشن ایڈریس واپس کرتا ہے ، لیکن توجہ دیں & عارضی متغیر ہے ، جب فنکشن کا باڈی ختم ہوجاتا ہے ، & میموری کی جگہ بھی تصادفی طور پر غائب ہوجاتا ہے ، اور ہم عدم موجودگی کو واپس نہیں کرسکتے ہیں۔



لہذا آپ کوئی پتہ واپس نہیں کرسکتے ، ڈالیں temp بس اسے حذف کریں۔