मुझे कुछ ऑब्जेक्ट प्राप्त करने के लिए आईडी के रूप में स्ट्रिंग का उपयोग करने की आवश्यकता है। इसे एक रन-टाइम में कार्यान्वित करने पर, और अच्छी तरह से काम करता है। लेकिन यह स्पष्ट कारणों से स्थिर प्रकार की जांच असंभव बनाता है।संकलन-समय स्ट्रिंग हैशिंग
मैंने संकलन समय में स्ट्रिंग के हैश-योग की गणना के लिए एल्गोरिदम के लिए गुगल किया है: C++ compile-time string hashing with Boost.MPL।
यह मेरी समस्या का एकदम सही समाधान प्रतीत होता है, सिवाय इसके कि सिरिंज जो एल्गोरिदम के लिए आवश्यक है, स्पष्ट कारणों से, 4 वर्णों, या चरित्र-दर-चरित्र के साथ टुकड़ों में विभाजित किया जाना चाहिए।
अर्थात, पहचान पत्र के सामान्य मौजूदा रिकॉर्ड के बजाय, मैं इस तरह से लिखने के लिए होगा:
hash_cstring<boost::mpl::string<'obje', 'ct.m', 'etho', 'd'>>::value
यह बिल्कुल बेकार है।
सवाल यह है कि इस एल्गोरिदम में "object.method"
जैसे स्ट्रिंग को सही ढंग से कैसे पास किया जाए?
सभी को धन्यवाद।
क्या आप सीधे स्ट्रिंग के बजाय स्थिर स्ट्रिंग के साथ संरचना का उपयोग कर सकते हैं? शायद उन्हें उत्पन्न करने के लिए एक मैक्रो भी? – Anycorn
@aaa: मैक्रोज़ टोकन को विभाजित नहीं करते हैं, वे उन्हें स्ट्रिंग या समेकित कर सकते हैं, लेकिन उन्हें विभाजित नहीं कर सकते हैं। नाम और स्थिर स्ट्रिंग के साथ संरचना उत्पन्न करने के लिए –
@ मैट मैक्रोज़। उदाहरण के लिए '#define str (n) struct n {...} ' – Anycorn