2009-06-18 12 views
6

Hej, başka bir soru:boost: ruh yeniden kuralları

Ben ortak kurallar bir dizi kullanmak çok benzer ayrıştırıcıları bir dizi yazdım

. Bu kuralı <> nesnelerini birden fazla ayrıştırıcı tarafından erişilebilecekleri bir yerde saklayabilir miyim? Bunun gibi her nasılsa görünür:

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; 
Ben tercihen bazı sınıfın bir korumalı statik değişken içine, ortak bir yere NMEA'yı ... adında tüm kuralları koymak istiyorum

. Ruhsal dokümantasyonda dilbilgisi denilen şeyin anahtar olduğunu düşünüyorum ama dürüst olmak gerekirse bu konuda henüz pek bir şey anlamadım.

Çok teşekkürler! Şerefe!

cevap

2

Sadece normal değişkenler, özel bir şey yapmanıza gerek yok.

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

Ve uygulama dosyasında: senin başlık yazma Yani rağmen

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

, ben size üye değişkenleri kullanmanız önerilir düşünüyorum.