फोन करने के लिए:सिंटेक्स मैं सोच रहा हूँ फोन करने के लिए उचित सिंटैक्स टेम्पलेट विधि के रूप में दिया क्या टेम्प्लेटेड विधि
struct print_ch {
print_ch(char const& ch) : m_ch(ch) { }
~print_ch() { }
template<typename T>
void operator()() {
std::cout << static_cast<T>(m_ch) << std::endl;
}
private:
char m_ch;
};
मैं इस तरह sth के साथ आया था:
print_ch printer('c');
printer.operator()<int>();
और यह काम करने के लिए लगता है (जीसीसी 4.5), लेकिन जब मैं इसे एक और टेम्प्लेटेड विधि के अंदर उपयोग करते हैं, उदाहरण के लिए:
struct printer {
typedef int print_type;
template<typename T_functor>
static void print(T_functor& fnct) {
fnct.operator()<print_type>();
}
};
संकलन +०१२३००२९५८६ के साथ विफल। इसे सही करने के लिए कोई विचार? अग्रिम में धन्यवाद।
fnct.template operator()<print_type>();
आप template
कीवर्ड के साथ इस निर्दिष्ट नहीं करते हैं संकलक समझेंगे कि operator()
सिर्फ एक है:
यह बहुत करने के लिए क्लीनर है बस एक नियमित समारोह बनाएँ। ऑपरेटरों को कम से कम और जब उचित हो, इस्तेमाल किया जाना चाहिए। – JoshD
@ जोशड धन्यवाद, ऐसा लगता है कि आप सही हैं, मुझे इस – erjot
पर पुनर्विचार करना होगा, वास्तव में, 'ऑपरेटर()' ओवरलोडिंग यहां समझ में नहीं आता है, क्योंकि इसे नियमित फ़ंक्शन के समान वाक्यविन्यास के साथ नहीं कहा जा सकता है, जो पूरी तरह से उद्देश्य को हरा देता है। – UncleBens