मुझे एक जीसीसी चेतावनी का सामना करना पड़ रहा है जिसे मैं ठीक करना चाहता हूं। असल में मैं एक विधि को स्थानीय चर के लिए एक सूचक से गुजर रहा हूं, जो मेरे मामले में बिल्कुल ठीक है। मैं समझता हूं कि संकलक मुझे क्यों बताता है कि यह एक संभावित समस्या है, लेकिन मेरे मामले में यह ठीक है।अस्थायी - कार्यवाही की आवश्यकता लेना
मैं स्थानीय स्थान पर इसे कैसे काम कर सकता हूं? संकलन करते समय -fpermissive
पास करने से मुझे भविष्य की समस्याओं को खोजने में असफल हो जाएगा। मैं इस विशिष्ट समस्या को ठीक करना चाहता हूं, या इसे हल करना चाहता हूं।
कोड यहाँ उपलब्ध है:
#include <cstdio>
class Integer{
public:
Integer(int i){ v = i; };
int value(){ return v; };
private:
int v;
};
int foo(Integer *i);
int main()
{
foo(&Integer(12));
}
int foo(Integer *i)
{
std::printf("Integer = %d\n", i->value());
}
और संकलन मुझे देता है:
$ g++ test-reference.cpp -O test-reference
test-reference.cpp: In function ‘int main()’:
test-reference.cpp:15:18: error: taking address of temporary [-fpermissive]
$ g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu3) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
संपादित करें:
बनाने foo
एक स्थिरांक सूचक ले, और के रूप में value()
अंकन के रूप const
का उपयोग करना (कॉन्स) एक ही त्रुटि देता है।
@jalf चटाई प्रतिक्रिया देखते हैं, को समझने के लिए। मेरे मामले में, जब फ़ंक्शन कहा जाता है तो वेरिएबल स्कोप पर होता है। – elcuco
क्या आप फ़ंक्शन के हस्ताक्षर को 'int foo (const Integer & i);'? – jrok