2010-11-10 14 views
11

क्या कोई सी ++ में पिकलिंग के लिए "भाषा स्तर" सुविधा के बारे में जानता है? मुझे बूस्ट सीरियलाइजेशन, या Google प्रोटोकॉल बफर जैसे कुछ नहीं चाहिए। इसके बजाए, कुछ ऐसा जो क्लास के सभी सदस्यों को स्वचालित रूप से क्रमबद्ध कर सकता है (कुछ सदस्यों को बाहर करने के विकल्प के साथ, या तो क्योंकि वे धारावाहिक नहीं हैं, या अन्यथा क्योंकि मुझे बाद में उन्हें बचाने की परवाह नहीं है)। यह पार्स समय पर एक अतिरिक्त कार्रवाई के साथ पूरा किया जा सकता है, जो स्वचालित क्रमबद्धता को संभालने के लिए कोड उत्पन्न करेगा। क्या किसी ने ऐसा कुछ सुना है?सी ++ के लिए पायथन शैली पिकलिंग?

उत्तर

7

मुझे विश्वास नहीं है कि बिना किसी रन-टाइम आत्मनिरीक्षण क्षमताओं वाली भाषा में ऐसा करने का कोई तरीका है।

+0

जैसा कि जैकब नीचे बताता है, मैं बस सोच रहा था कि किसी ने संकलन-समय उपकरण देखा है जो इस समस्या को हल करने में सक्षम हो सकता है। मुझे लगता है कि वहां ऐसा कुछ भी नहीं है। –

+0

@ रोनी चौधरी जब तक मैं गलत नहीं हूं, बूस्ट सीरियलाइजेशन भाषा के सख्त होने के लिए एक बढ़िया काम करता है। – Marcin

+0

@ मार्सिन - बूस्ट। सरलीकृत वास्तव में एक अच्छी नौकरी करता है, लेकिन आपको एक 'serialize()' फ़ंक्शन लिखना है जो उस ऑब्जेक्ट का विवरण जानता है जिसे आप क्रमबद्ध करना चाहते हैं। – Ferruccio

1

वहाँ के साथ < < और >> ऑपरेटरों मानक सी ++ क्रमबद्धता, है यद्यपि आप अपने वर्गों में से प्रत्येक के लिए इन लागू करने के लिए (जो यह लग रहा है जैसे आप नहीं करना चाहते हैं) होगा। कुछ चिकित्सकों का कहना है कि आपको इन ऑपरेटरों को हमेशा लागू करना चाहिए, हालांकि, हम में से अधिकांश शायद ही कभी करते हैं।

3

शायद xml डेटा बाध्यकारी? gsoap कई विकल्पों में से एक है। आप डेटा संरचना और एक्सएमएल स्कीमा के बीच मैपिंग के लिए स्वचालित रूप से कोड उत्पन्न कर सकते हैं। यह सुनिश्चित नहीं है कि यह सेट अप करने वाले अन्य विकल्पों की तुलना में आसान होगा

0

ऐसा करने का एक तेज़ तरीका यह है कि जब मैं एक फ़ाइल में एक स्ट्रक्चर को सहेजने की ज़रूरत होती तो मुझे एक बार काम करना पड़ता था, मेरी संरचना को char सरणी में डालना था और लिखना था यह एक फाइल के लिए बाहर। तब जब मैं अपनी संरचना को वापस लोड करना चाहता था, तो मैं पूरी फ़ाइल (बाइनरी मोड में) पढ़ूंगा, और पूरी चीज को मेरे स्ट्रक्चर के प्रकार में डाल दूंगा। काफी आसान और इस तथ्य का फायदा उठाता है कि structs स्मृति में एक संगत ब्लॉक के रूप में संग्रहीत किया जाता है। मैं उम्मीद नहीं करता कि यह संकलित डेटा संरचनाओं या पॉइंटर्स के साथ काम करे, लेकिन विचार के लिए भोजन।

+2

यह एक पुरानी और अत्यंत _poor_ serialization रणनीति दोनों है जो किसी भी परिस्थिति के तहत शानदार रूप से असफल हो जाएगी, जैसे: विभिन्न कंपाइलर झंडे, विभिन्न कंपाइलर संस्करण, विभिन्न CPUs (यहां तक ​​कि आवश्यक रूप से अलग-अलग आर्किटेक्चर नहीं!), विभिन्न ऑपरेटिंग सिस्टम ... –

3

कुछ है कि स्वचालित रूप से एक वर्ग

के सभी सदस्यों को क्रमानुसार सकता है यह C++ में संभव नहीं है। पायथन, सी #, जावा एट अल। इसे प्राप्त करने के लिए रन-टाइम आत्मनिरीक्षण का उपयोग करें। आप इसे C++ में नहीं कर सकते हैं, आरटीटीआई पर्याप्त शक्तिशाली नहीं है।

संक्षेप में, सी ++ भाषा में कुछ भी नहीं है जो किसी को रन-टाइम पर ऑब्जेक्ट के सदस्य चर खोजने में सक्षम बनाता है। इसके बिना, आप स्वचालित रूप से उन्हें क्रमबद्ध नहीं कर सकते हैं।

संबंधित मुद्दे