मैं निम्नलिखित फार्म के कोड का एक टुकड़ा के साथ एक समस्या है में नाकाम रहने के:टेम्पलेट सदस्य समारोह के लिए कॉल को संकलित करने के
मैं:
template<class Type>
class Class1 {
public:
template<class TypeName1> TypeName1* method1() const {return 0;}
};
struct Type1{};
struct Type2{};
class Class2 {
public:
template<typename TypeName1, typename TypeName2>
int method2() {
Class1<TypeName2> c;
c.method1<TypeName1>();
return 0;
}
int method1() {
return method2<Type1, Type2>();
}
};
int
main() {
Class2 c;
return c.method1();
}
codepad पर संकलक के साथ संकलित जब निम्न त्रुटि:
t.cpp: In member function 'int Class2::method2()': Line 15: error: expected primary-expression before '>' token compilation terminated due to -Wfatal-errors.
अपमानजनक रेखा का आविष्कार है टेम्पलेट सदस्य समारोह:
c.method1<TypeName1>();
अच्छा जवाब। भयानक भाषा –
एक आकर्षण की तरह काम किया, 5 मिनट में स्वीकार करेंगे! –
+1। विशेष रूप से इस संदर्भ में, भले ही 'कक्षा 1' अग्रेषित हो, फिर भी यह नहीं माना जा सकता कि 'कक्षा 1 :: method1' एक टेम्पलेट फ़ंक्शन है। अन्यथा 'कक्षा 1' का एक टेम्पलेट विशेषज्ञता अन्यथा साबित हो सकता है। –