मै मैट्रिक्स संचालन के लिए सी ++ में एक छोटी मैट्रिक्स लाइब्रेरी लिख रहा हूं। हालांकि मेरा संकलक शिकायत करता है, जहां इससे पहले नहीं था। यह कोड 6 महीने के लिए शेल्फ पर छोड़ा गया था और बीच में मैंने अपने कंप्यूटर को डेबियन एक्ट से लेनी (जी ++ (डेबियन 4.3.2-1.1) 4.3.2 से अपग्रेड किया था) हालांकि मुझे उबंटू सिस्टम पर एक ही समस्या है जी ++।एक ostream के लिए << ऑपरेटर को ठीक से अधिभार कैसे करें?
namespace Math
{
class Matrix
{
public:
[...]
friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
}
}
और "कार्यान्वयन":
matrix.cpp:459: error: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' must take exactly one argument
:
using namespace Math;
std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {
[...]
}
इस संकलक द्वारा दिए गए त्रुटि है
यहाँ मेरी मैट्रिक्स वर्ग के प्रासंगिक हिस्सा है मैं इस त्रुटि से थोड़ी उलझन में हूं, लेकिन फिर फिर से मेरे सी ++ ने उन 6 राक्षसों के बहुत सारे काम करने के बाद थोड़ा सा जंगली हो गया है चौथाई। :-)
और आपको इसे मैथ नेमस्पेस के अंदर घोषित करना चाहिए (न केवल नामस्थान मैथ के उपयोग से)। –
'ऑपरेटर <<' को 'मठ' के नामस्थान में क्यों होना चाहिए? ऐसा लगता है कि यह वैश्विक नामस्थान में होना चाहिए। मैं मानता हूं कि मेरा कंपाइलर चाहता है कि यह 'मठ' के नामस्थान में हो, लेकिन यह मुझे समझ में नहीं आता है। –