Thursday, 15 September 2011

c++ - avoiding template definition in header file -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 13 उत्तर

मेरे पास निम्नलिखित क्लास परिभाषित है हेडर में:

  वर्ग ए {निजी: टेम्पलेट & lt; int i & gt; शून्य विधि (); };  

क्या मेरे लिए किसी भी तरह से विधि को अपनी स्वयं की A.cpp फ़ाइल में सामान्य विधि कार्यान्वयन के साथ रखने के लिए है? मैं यह पूछ रहा हूँ क्योंकि एएच में कार्यान्वयन करना इंटरफ़ेस को पढ़ने में बहुत मुश्किल होता है, खासकर जब यह एक निजी फ़ंक्शन है

"post-text" itemprop = "text">

आप निम्न कार्य कर सकते हैं (जैसा कि यह व्यापक रूप से इस्तेमाल किया जाता है):

ए। एचपी


  वर्ग ए {निजी : टेम्पलेट & lt; int i & gt; शून्य विधि (); }; # "A.tcc"  

A.tcc


  टेम्प्लेट & lt; int i & gt; को शामिल करें। Void A :: method () {// i के साथ कुछ करें}  

ध्यान दें कि कार्यान्वयन फ़ाइल को .cpp से एक अलग एक्सटेंशन के साथ नाम करने में महत्वपूर्ण है, क्योंकि यह अधिकांश मानक बिल्ड सिस्टम परिवेशों को भ्रमित करेगा (जब तक आपके पास अनुवाद इकाई फ़ाइलों का पूरा मैनुअल चयन नहीं होता है)।


यदि आप i < / Code>, आप उन्हें निम्नानुसार प्रदान कर सकते हैं:

  // 1 टेम्प्लेट के लिए विशेषज्ञता & lt; & gt; शून्य ए: विधि & lt; 1 & gt; () {// 1} टेम्पलेट के साथ विशेषज्ञता के लिए कुछ करें & lt; & gt; शून्य ए :: विधि & lt; 2 & gt; () {// 2 के साथ विशेषज्ञता के लिए कुछ करें}  

No comments:

Post a Comment