-1
對於類項目我有一個二維數組指針。我理解構造函數,析構函數等,但是我在理解如何設置數組中的值時遇到了問題。我們使用重載輸入操作符來輸入值。 這裏是我有那個運營商至今代碼:使用指針數組重載輸入操作符
istream& operator>>(istream& input, Matrix& matrix)
{
bool inputCheck = false;
int cols;
while(inputCheck == false)
{
cout << "Input Matrix: Enter # rows and # columns:" << endl;
input >> matrix.mRows >> cols;
matrix.mCols = cols/2;
//checking for invalid input
if(matrix.mRows <= 0 || cols <= 0)
{
cout << "Input was invalid. Try using integers." << endl;
inputCheck = false;
}
else
{
inputCheck = true;
}
input.clear();
input.ignore(80, '\n');
}
if(inputCheck = true)
{
cout << "Input the matrix:" << endl;
for(int i=0;i< matrix.mRows;i++)
{
Complex newComplex;
input >> newComplex;
matrix.complexArray[i] = newComplex; //this line
}
}
return input;
}
顯然賦值語句我這裏是不正確的,但我不知道它是如何工作的。如果需要包含更多代碼,請告訴我。 這是主要的構造是什麼樣子:
Matrix::Matrix(int r, int c)
{
if(r>0 && c>0)
{
mRows = r;
mCols = c;
}
else
{
mRows = 0;
mCols = 0;
}
if(mRows < MAX_ROWS && mCols < MAX_COLUMNS)
{
complexArray= new compArrayPtr[mRows];
for(int i=0;i<mRows;i++)
{
complexArray[i] = new Complex[mCols];
}
}
}
,這裏是Matrix.h所以你可以看到屬性:
class Matrix
{
friend istream& operator>>(istream&, Matrix&);
friend ostream& operator<<(ostream&, const Matrix&);
private:
int mRows;
int mCols;
static const int MAX_ROWS = 10;
static const int MAX_COLUMNS = 15;
//type is a pointer to an int type
typedef Complex* compArrayPtr;
//an array of pointers to int type
compArrayPtr *complexArray;
public:
Matrix(int=0,int=0);
Matrix(Complex&);
~Matrix();
Matrix(Matrix&);
};
#endif
我得到的錯誤是「不能轉換的複雜在矩陣:: compArrayPtr(aka Complex *)在任務中「如果任何人都可以解釋我做錯了什麼,我會非常感激。
我覺得指針在這裏有一個數組的含義(所以矩陣是2d數組)。 – Lol4t0 2013-04-27 18:39:25
@ Lol4t0不,'complexArray'是一個指針數組。該變量與下標取消引用,並最終得到一個指針。 – pmr 2013-04-27 18:43:01
謝謝!你的解決方案奏效 – bitva 2013-04-27 18:48:12