मैं एक वर्ग बनाने की प्रक्रिया में हूं जो किसी विशेष डेटा स्रोत के बारे में मेटाडेटा संग्रहीत करता है। मेटाडाटा एक पेड़ में संरचित होता है, जो एक्सएमएल की संरचना के समान ही होता है। मेटाडेटा मान पूर्णांक, दशमलव, या स्ट्रिंग मान हो सकते हैं।सी ++ संस्करण
मुझे उत्सुकता है कि सी ++ में इस तरह की स्थिति के लिए संस्करण डेटा स्टोर करने का कोई अच्छा तरीका है। मैं मानक पुस्तकालयों का उपयोग करने के लिए संस्करण के लिए चाहता हूं, इसलिए मैं उपलब्ध COM, Ole, और SQL VARIANT प्रकारों से परहेज कर रहा हूं।
मेरे वर्तमान समाधान इस तरह दिखता है:
enum MetaValueType
{
MetaChar,
MetaString,
MetaShort,
MetaInt,
MetaFloat,
MetaDouble
};
union MetaUnion
{
char cValue;
short sValue;
int iValue;
float fValue;
double dValue;
};
class MetaValue
{
...
private:
MetaValueType ValueType;
std::string StringValue;
MetaUnion VariantValue;
};
MetaValue वर्ग वर्तमान में संग्रहीत संस्करण मूल्य प्राप्त करने के लिए विभिन्न कार्यों जाओ है, लेकिन यह करता है, तो का एक बड़ा ब्लॉक एक मूल्य के लिए, प्रत्येक क्वेरी बनाने समाप्त होता है/अन्यथा यदि बयान यह पता लगाने के लिए कि मैं किस मूल्य की तलाश कर रहा हूं।
मैंने मूल्य को केवल एक स्ट्रिंग के रूप में संग्रहीत करने और अलग-अलग प्रकार के प्रकार प्राप्त करने के लिए रूपांतरण करने का भी पता लगाया है, लेकिन जहां तक मैंने देखा है, यह आंतरिक स्ट्रिंग पार्सिंग और त्रुटि हैंडलिंग का एक समूह है जो ' टी सुंदर, फ्लोटिंग पॉइंट मानों के साथ परिशुद्धता और डेटा हानि के मुद्दों का एक बड़ा पुराना कैन खोलता है, और अगर ऊपर बताई गई समस्या है तो अभी भी क्वेरी को खत्म नहीं करता है।
क्या किसी ने मानक पुस्तकालयों का उपयोग कर सी ++ संस्करण डेटा प्रकार के लिए उपयोग करने के लिए क्लीनर को लागू या देखा है?
मैं एक वर्णनात्मक प्रश्न के रूप में अपने शीर्षक phrasing सुझाव दे सकता है? शायद कुछ "सी ++ में संस्करण डेटा कैसे स्टोर करें?" मुझे लगता है कि आपको और प्रतिक्रिया मिलेगी! – jwfearn
हम्म ... मैं एक बार में शीर्षक समझ गया। –