मैंने this question से पहले पूछा जहां a solution प्रस्तुत किया गया था। जहां तक सवाल का सवाल है, समाधान अब तक बढ़िया है, लेकिन अब मैं उलझन में हूं कि मैं वर्ग के के बाहर विधियों को कैसे परिभाषित करता हूं, मैं .inl
फ़ाइल में विधियों को परिभाषित करना चाहता हूं। इस मामले में वाक्यविन्यास क्या होगा?टेम्पलेट पैरामीटर विधियों के साथ टेम्पलेट क्लास विधियों की परिभाषा टेम्पलेट पैरामीटर
बस स्पष्ट होना, एक टेम्पलेट वर्ग के लिए, विधि परिभाषा हो जाएगा:
template <typename T>
struct Foo
{
Foo();
};
// C-tor definition
template <typename T>
Foo<T>::Foo()
{
}
मैं एक पैरामीटर के रूप में enable_if
के साथ टेम्पलेट वर्ग के लिए तरीकों को कैसे परिभाषित करेंगे?
template <typename Policy, enable_if< is_base<BasePolicy, Policy>::value >::type >
struct Foo
{
Foo();
};
// C-tor definition -- ???
जैसा कि आप इसे इनलाइन परिभाषित करते हैं, वही होगा? समस्या क्या है? –
@KerrekSB: मुझे वाक्यविन्यास के बारे में निश्चित नहीं है ... 'inl' फ़ाइल में कन्स्ट्रक्टर निकालने के मेरे वर्तमान प्रयासों के परिणामस्वरूप त्रुटि हुई: '{ctor}: Foo' का सदस्य नहीं है। संरचना के भीतर इसे परिभाषित करना ठीक से संकलित करता है। –
Samaursa
मुझे लगता है कि समस्या यह है कि पहले पोस्ट किया गया "समाधान" वास्तव में एक समाधान नहीं है: आपको 'enable_if <...>' या 'enable_if_c <...>' से 'bool'' टाइप को निकालने की आवश्यकता है और इसे [डिफ़ॉल्ट के रूप में] एक टेम्पलेट पैरामीटर। एक बार ऐसा करने के बाद यह स्पष्ट हो जाता है कि लाइन परिभाषा कैसा दिखता है। –