c++ - Confusion between boost::bind and boost::phoenix placeholders -
आत्मा के लिए सिमेंटिक कार्यों को लिखने के लिए अलग-अलग तरीके हैं। क्वाई: सादे कार्यों का उपयोग, सामान्यतया, फीनिक्स का उपयोग करते हुए लिखा गया सिमेंटिक कार्यों के लिए नामस्थान () से उपलब्ध हैं , इसलिए मैं यह कोड लिखता हूं कृपया के उपयोग पर ध्यान दें हालांकि, मैं अभी भी यह संकलक त्रुटि प्राप्त करता है मैं इस संकलक त्रुटि को कैसे ठीक करूं? क्या आपने शायद एक बढ़ावा :: भावना दस्तावेज़ीकरण में यह महत्वपूर्ण चेतावनी है
बूस्ट.बंड , बूस्ट.लैम्डा , या फीनिक्स । उत्तरार्द्ध तीन आपको पैरामीटर प्लेसमेंट ( _1 , _2 , आदि) को नियंत्रित करने के लिए विशेष प्लेसहोल्डर का उपयोग करने की अनुमति देते हैं। प्रत्येक पुस्तकालयों में यह जगहधारकों के स्वयं के कार्यान्वयन है, सभी अलग-अलग नामस्थानों में। आपको सुनिश्चित करना है कि प्लेसहोल्डर्स को एक लाइब्रेरी के साथ मिश्रण न करना चाहिए, जिसका अर्थ वे नहीं हैं और सिमेंटिक एक्शन लिखते समय विभिन्न पुस्तकालयों का उपयोग नहीं करते हैं। बूस्ट.बंड , :: _ 1 , :: _ 2 , आदि का उपयोग करें (हाँ, इन प्लेसहोल्डर को वैश्विक नामस्थान में परिभाषित किया गया है)। Boost.Lambda नामस्थान बढ़ावा :: लैम्ब्डा में परिभाषित प्लेसहोल्डर का उपयोग करें। boost में वर्णित प्लेसहोल्डर का उपयोग करें :: भावना । कृपया ध्यान दें कि आपकी सुविधा के लिए सभी मौजूदा प्लेसहोल्डर्स नाम स्थान boost :: spirit :: qi
टेम्पलेट & lt; typename iterator & gt; Struct ruleset_grammar: qi :: व्याकरण & lt; इटरेटर & gt; {टेम्प्लेट & lt; typename TokenDef & gt; Ruleset_grammar (TokenDef const & amp; टो): ruleset_grammar :: base_type (प्रारंभ) {start = * (tok.set_name [boost :: bind (& cRuleSet :: setName, और theRuleSet, :: _ 1)]); } Qi :: नियम & lt; इटरेटर & gt; प्रारंभ; }; :: _ 1
C: \ documents and settings \ james \ spirit_test.cpp (138): त्रुटि C2872: '_1': अस्पष्ट प्रतीक 'c: \ program files \ boost \ boost_1_44 \ boost \ spirit \ home \ support \ argument.hpp हो सकता है (124): कॉन्स्ट बूस्ट :: फीनिक्स :: अभिनेता & lt; Eval & gt; Boost :: spirit :: _ 1 'के साथ [Eval = boost :: spirit :: argument & lt; 0 & gt; ] या 'सी: \ प्रोग्राम फाइलों को बढ़ावा दें \ boost_1_44 \ boost \ bind \ placeholders.hpp (43): boost :: arg & lt; I & gt; के साथ 'अनाम-नामस्थान' :: _ 1 ' नामस्थान बढ़ावा :: भावना का उपयोग किया है; कहीं उस फ़ाइल के शीर्ष पर? क्योंकि यदि हां, तो दोनों आत्मा और साथ ही बाइंड प्लेसहोल्डर वैश्विक नाम स्थान में हैं qi :: का प्रत्यक्ष उपयोग मेरी धारणा का समर्थन कर सकता है, लेकिन यह भी एक सरल नामस्थान qi = boost :: spirit :: qi हो सकता है।
Comments
Post a Comment