मेरे पास यह कोड है:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
मैं इसे इस रूप में चाहता हूं:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
मैं यह कैसे कर सकता हूं? सही सिंटैक्स क्या है?
केवल कक्षा घोषणा के अंदर फ़ंक्शन की घोषणा क्यों नहीं होती है (देखें कोडपैड.org/wxaZOMYW )? आप फ़ंक्शन को हेडर से बाहर
—
घोषित
@hiobs: एफडब्ल्यूआईडब्ल्यू, आप घोषणा को सीपीपी फ़ाइल में स्थानांतरित कर सकते हैं। उस ने कहा, मैंने केवल एक बार कुछ हैकरी करने के लिए ऐसा किया है। उस मामले में, यह जानना कि यह कैसे करना आवश्यक है।
—
थॉमस एडिंग
कभी-कभी किसी को फ़ंक्शन बॉडी द्वारा आवश्यक निर्भरता की परिभाषा के बाद, क्लास के बाहर फ़ंक्शन की परिभाषा को स्थानांतरित करना चाहिए। ऐसा तब होता है जब क्लास ए वर्ग बी का उपयोग करता है और बी भी ए का उपयोग करता है। उस स्थिति में आप ए और बी घोषित करते हैं, फिर ए और बी तरीकों को परिभाषित करते हैं।
—
व्हीजिल