मैं लिंकर त्रुटि से विस्मित कर रहा हूँ जब निम्न कोड का उपयोग कर का कारण बनता है:"स्थिर स्थिरांक पूर्णांक" त्रुटि जोड़ने (अपरिभाषित-संदर्भ)
// static_const.cpp -- complete code
#include <vector>
struct Elem {
static const int value = 0;
};
int main(int argc, char *argv[]) {
std::vector<Elem> v(1);
std::vector<Elem>::iterator it;
it = v.begin();
return it->value;
}
बहरहाल, यह विफल रहता है जब जोड़ने - किसी भी तरह यह एक की जरूरत है स्थैतिक आधार "मूल्य" के लिए प्रतीक।
$ g++ static_const.cpp
/tmp/ccZTyfe7.o: In function `main':
static_const.cpp:(.text+0x8e): undefined reference to `Elem::value'
collect2: ld returned 1 exit status
BTW, यह -O1 या बेहतर के साथ ठीक संकलित; लेकिन यह अभी भी अधिक जटिल मामलों के लिए विफल रहता है। मैं जीसीसी संस्करण 4.4.4 20100726 (Red Hat 4.4.4-13) का उपयोग कर रहा हूं।
कोई भी विचार मेरे कोड के साथ क्या गलत हो सकता है?
[संरचना/वर्ग के अंदर स्थिर स्थिरांक के अजीब अपरिभाषित प्रतीक] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4891067/weird-undefined-symbols-of-static-constants-inside-a-struct- कक्षा) – karlphillip
उपयोगी लिंक के लिए धन्यवाद! यह एक वैकल्पिक समाधान भी दिखाता है, 'स्ट्रक्चर एलेम {enum {value = 0}; } ', जो बहुत आकर्षक लगता है। – hrr
[सी ++ के संभावित डुप्लिकेट - वर्ग परिभाषा में स्थिर कॉन्स पूर्णांक सदस्यों को परिभाषित करना] (http://stackoverflow.com/questions/3025997/c-defining-static-const-integer-members-in-class-definition) – ks1322