2010-12-15 22 views
6

कैसे मैं डिफ़ॉल्ट टेम्पलेट तर्क के रूप में एक समारोह सूचक लिख सकता हूँ, I'am इसे इस तरह लिखने के लिए अनुमान लगा:सी ++ डिफ़ॉल्ट टेम्पलेट तर्क के रूप में समारोह सूचक

template<typename R, 
     typename A, 
     typename F=R (*PF)(A)> 
class FunctionPtr { ... 

मेरे सवाल है,

1.is यह संभव?

2. अगर यह है और ऊपर मेरा अनुमान कोड सही है, तो PF का उद्देश्य क्या है? क्या मुझे इसकी ज़रूरत है?

उत्तर

3
  1. हाँ
  2. नहीं, आप पीएफ जरूरत नहीं है।

    template<typename R, 
         typename A, 
         typename F=R (*)(A)> 
    
+0

और सवाल, मैं सदस्य समारोह के लिए कैसे लिखूं, इस तरह? 'टेम्पलेट <टाइपनाम सी, टाइपनाम आर, टाइपनाम ए, टाइपनाम एफ = आर (सी :: *) (ए)>' – uray

+0

त्रुटि मिली। वीसी03 पर सी 2653: "सी 'एक टाइप या नामस्थान नहीं है" टाइपनाम एफ = आर (सी :: *) (ए)> ' – uray

+0

पर मैंने एक और सवाल पूछा: http://stackoverflow.com/प्रश्न/4450246/सी-पॉइंटर-टू-सदस्य-फ़ंक्शन-के-टेम्पलेट-डिफ़ॉल्ट-तर्क – uray

2
  1. हाँ, यह संभव है
  2. PF न केवल बेकार है लेकिन इस संदर्भ में हटा दिया जाना चाहिए। यह, उदाहरण के लिए, एक समारोह सूचक घोषणा के संदर्भ में आवश्यक होगा:

    int (*PF)(double) = &A::foo; // declares a 'PF' variable of type 'int (*)(double)' 
    

    लेकिन इसे यहाँ न तो आवश्यक है और न ही कानूनी है।

0

मैं सुझाव देने के लिए typedef आईएनजी सूचक का सुझाव देता हूं। typedef R (*PF)(A); फिर डिफ़ॉल्ट टेम्पलेट तर्क के रूप में PF दें।

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