2013-06-11 26 views
7

मैं कुछ सी ++ कोड को समझने की कोशिश कर रहा हूं। मैं एक अनुभवी जावा प्रोग्रामर हूं जो सी ++ सीखने की कोशिश कर रहा है। मैंने टेम्पलेट्स पर पहले से ही कुछ संपूर्ण लेख पढ़े हैं, लेकिन उनमें से किसी ने मुझे जवाब नहीं दिया है कि निम्नलिखित टेम्पलेट विनिर्देश का क्या अर्थ है।सी ++: टेम्पलेट <class> का क्या अर्थ है?

template< 
    template<template<class> class, class> class VisualOdometryTT, 
    template<class> class NodeBuilderTT, 
    class PoseGraphT> 
class VORosInterface{ ... }; 

हिस्सा मुझे समझ नहीं आता template<class> मैं कहाँ लगता है कि कुछ प्रकार विनिर्देश याद आ रही है है। लेकिन कोड बिना किसी समस्या के संकलित करता है।

+4

"टेम्पलेट टेम्पलेट पैरामीटर" के लिए खोजें। – juanchopanza

उत्तर

6

एक उदाहरण के रूप NodeBuilderTT का उपयोग करना है, क्योंकि यह आसान है:

NodeBuilderTT टेम्पलेट पैरामीटर ही एक पैरामीटर होने एक टेम्पलेट है कि है - चलो कि Z कहते हैं।

आप औपचारिक रूप से नाम के लिए Z चुन सकते थे और कोड सिर्फ एक ही संकलन होगा:

template<class Z> class NodeBuilderTT 

अभी तक यह काफी घोषित समारोह तर्क के समान है:

void foo(int x) {} // works 
void foo(int) {} // also works 

हालांकि साथ, फ़ंक्शन बॉडी के अंदर आप आमतौर पर x नाम का उपयोग करेंगे। टेम्पलेट्स के साथ आप VORosInterface की परिभाषा में नहीं उपयोग Z कर सकते हैं, तो वहाँ बिल्कुल यह नामकरण का कोई मतलब नहीं है और यह सीधे यहाँ रिकॉर्ड बनाया मदद करने के लिए K-ballo को

template<class> class NodeBuilderTT 

मेरे धन्यवाद लिखने के लिए मुहावरेदार है।

+2

भले ही आप इसे नाम देने के लिए पर्याप्त देखभाल करते हैं, यह अर्थहीन है क्योंकि आप इसका उपयोग नहीं कर सकते हैं। –

+0

स्पष्टीकरण के लिए धन्यवाद! अब यह मुझे स्पष्ट है, लेकिन जितना गहरा मैं सी ++ में खोदता हूं, उतना ही मैं जावा से प्यार करता हूं :- डी –

+0

@ के-बॉलो: आप कहते हैं कि मैंने 'टेम्पलेट <टेम्पलेट कक्षा नोडबिल्डर टीटी> कक्षा VOROSInterface {...};' I वर्ग निकाय में एक प्रकार पैरामीटर के रूप में 'टी' का उपयोग नहीं कर सका? –

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