2009-06-18 10 views
6

Hej, एक और सवाल:बढ़ावा: आत्मा पुन: उपयोग के नियमों

मैं बहुत समान पारसर्स जो आम नियमों का एक नंबर का उपयोग के एक नंबर लिखा है। क्या मैं इन नियमों को <> ऑब्जेक्ट्स को उस स्थान पर संग्रहीत कर सकता हूं जहां उन्हें एकाधिक पार्सर्स द्वारा मूल्यांकन किया जा सकता है? यह इस तरह से किसी भी तरह दिखता है:

rule<> nmeaStart = ch_p('$'); 
rule<> nmeaAddress = alnum_p() >> alnum_p() >> !alnum_p() >> !alnum_p(); 
rule<> nmeaDelim = ch_p(','); 
rule<> nmeaHead = nmeaStart >> nmeaAddress >> nmeaDelim; 
... 
/* other rules. Different for each parser*/ 
... 
rule<> nmeaChkSumStart = ch_p('*'); 
rule<> nmeaChkSum = int_parser<unsigned int,16,2,2>(); 
rule<> nmeaTail = nmeaChkSumStart >> nmeaChkSum >> eol_p; 

मैं बेहतर कुछ वर्ग के एक संरक्षित स्थिर चर में एक आम जगह में NMEA ... नामित सभी नियमों डाल करने के लिए, चाहते हैं। मुझे लगता है कि आत्मा में व्याकरण नामक चीज-दस्तावेज कुंजी है लेकिन ईमानदारी से मैं इसके बारे में अभी तक बहुत कुछ नहीं समझता।

बहुत धन्यवाद! चीयर्स!

उत्तर

2

वे केवल सामान्य चर हैं, आपको कुछ विशेष करने की आवश्यकता नहीं है। अपने शीर्ष लेख लिखने में तो:

class nmea { 
protected: 
    static rule<> start, address; 
}; 

और अपने कार्यान्वयन फ़ाइल में:

rule<> nmea::start = ch_p('$'); 
rule<> nmea::address = ch_p('$'); 
// etc. 

हालांकि, मुझे लगता है कि यह अनुशंसा की जाती है कि आप सदस्य चर का उपयोग करें।

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