規範是重載括號()運算符來訪問和分配矩陣的元素,但是,我正在努力弄清楚我的重載函數需要返回什麼。Overloaded()運算符
的簡要主:
//The .h files and everything has been included, my other functions work just not this one
cout << "Test(): " << endl;
m0(0,0) = 17.25;
m0(1,5) = -2.33;
m0(5,5) = 233; // There is class exception handling I just haven't included it
函數實現:
Matrix* Matrix::operator() (const unsigned int m, const unsigned int n) //We were told they HAD to be unsigned int
{
Matrix *ptr = &matrix[m][n];
return ptr;
}
的錯誤:
main.cpp: In function ‘int main()’:
main.cpp:59:15: error: lvalue required as left operand of assignment
m0(0,0) = 17.25;
^~~~~
main.cpp:60:16: error: lvalue required as left operand of assignment
m0(1,5) = -2.33;
^~~~
main.cpp:61:15: error: lvalue required as left operand of assignment
m0(5,5) = 233; // should throw an exception
我明白什麼是錯誤的說法,所以請不要只告訴我再讀一遍並修復它。我實際上並不確定如何解決我的函數正在返回的問題,並使其成爲主函數中的double值實際上可以分配給某個東西。
在此先感謝
你必須返回一個元素的引用,而不是指向整個對象的指針才能分配給它 –