[問題] 二維陣列和重載[]
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
問題(Question):
現在我有一個matrix的class
裡面有個template<class T> T **mat
然後目前重載[]算半成功吧= =
matrix<int> A;
cout << A;
這樣可以正確的output出結果
A[i][j] = rand()%5;
這樣他說我lvalue有錯QQ
餵入的資料(Input):
亂數(通常是int)
預期的正確結果(Expected Output):
就可以寫入正確的數字
錯誤結果(Wrong Output):
error: lvalue required as left operand of assignment
程式碼(Code):(請善用置底文網頁, 記得排版)
template<class T>
class matrix
{
public:
T **mat;
class temp
{
public:
int *array;
temp(T* array):array(array){}
T operator[](int index){return array[index];}
};
temp operator[](int index)
{
return temp(mat[index]);
}
friend ostream &operator<<(ostream &out,matrix<T> &mm)
{
for(int i = 0;i < mm.len;i++)
{
for(int j = 0;j < mm.len;j++)
out << mm[i][j] << " ";
out << endl;
}
return out;
}
};
int main()
{
matrix<int> A(9); // 9x9矩陣 值預設都0
cout << A; // 這邊輸出看起來是對的!
for(int i = 0;i < 9;i++)
for(int j = 0;j < 9;j++)
A[i][j] = rand()%5; //error
cout << A;
return 0;
}
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.123.33
→
04/02 01:11, , 1F
04/02 01:11, 1F
→
04/02 01:11, , 2F
04/02 01:11, 2F
→
04/02 01:11, , 3F
04/02 01:11, 3F
→
04/02 01:15, , 4F
04/02 01:15, 4F
→
04/02 01:16, , 5F
04/02 01:16, 5F
→
04/02 01:19, , 6F
04/02 01:19, 6F
→
04/02 01:23, , 7F
04/02 01:23, 7F
→
04/02 01:28, , 8F
04/02 01:28, 8F
→
04/02 01:29, , 9F
04/02 01:29, 9F
→
04/02 01:29, , 10F
04/02 01:29, 10F
→
04/02 01:30, , 11F
04/02 01:30, 11F
→
04/02 01:30, , 12F
04/02 01:30, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章