के आगे की घोषणा मेरे पास एक टेम्पलेट क्लास है जो एक मित्र टेम्पलेट फ़ंक्शन के साथ है। मैं वर्तमान में निम्नलिखित कोड है और यह काम कर रहा है:टेम्पलेट फ़ंक्शन
template<class T>
class Vector
{
public:
template<class U, class W>
friend Vector<U> operator*(const W lhs, const Vector<U>& rhs);
}
template<class U, class W>
Vector<U> operator*(const W lhs, const Vector<U>& rhs)
{
// Multiplication
}
मैं अपने समाधान के दोस्त समारोह आगे घोषणा करने के लिए के लिए इतना है कि मैं सुरक्षा लाभ और एक-से-एक पत्राचार यह प्रावधान है कि हो सकता है पसंद करेंगे मेरी वर्तमान विधि की तुलना में। मैंने निम्नलिखित की कोशिश की लेकिन त्रुटियों में चलते रहें।
template<class T>
class Vector;
template<class T, class W>
Vector<T> operator*(const W lhs, const Vector<T>& rhs);
template<class T>
class Vector
{
public:
friend Vector<T> (::operator*<>)(const W lhs, const Vector<T>& rhs);
}
template<class T, class W>
Vector<T> operator*(const W lhs, const Vector<T>& rhs)
{
// Multiplication
}
y मूल संस्करण के साथ मूल 'friend' घोषणा –
का उपयोग नहीं, वेक्टर के सभी टेम्पलेट instantiations मित्र ऑपरेटर के सभी टेम्पलेट instantiations के साथ * कर रहे हैं। मैं दूसरा समाधान पसंद करूंगा जहां वेक्टर सभी अलग-अलग टेम्पलेट इंस्टॉलेशन को मित्रों के रूप में अनुमति नहीं देंगे। – noddy