我一直在想這件事,並沒有提出任何有用的東西。我有2個類表示的矩陣:重載二維數組運算符並拋出異常
class CMatrix {
public:
CMatrixRow * matrix;
int height, width;
CMatrix(const int &height, const int &width);
CMatrix(const CMatrix &other);
~CMatrix();
CMatrixRow operator [] (const int &index) const;
...
}
class CMatrixRow {
public:
int width;
CMatrixRow(const int &width);
CMatrixRow(const CMatrixRow &other);
~CMatrixRow();
double operator [] (const int index) const;
void operator =(const CMatrixRow &other);
private:
double * row;
};
其中CMatrix是矩陣行(CMatrixRow)的容器。 當有人試圖訪問它的邊界之外的矩陣時,我需要拋出一個異常,換句話說,其中一個使用的索引大於矩陣的大小。問題是,我需要在第一個索引某種方式傳遞到方法
double operator [] (const int index) const;
所以它可以拋出異常有關這兩個索引的信息,無論是哪其中之一是錯誤的。我也想盡可能保持簡單。你能想到什麼嗎?
完全不同的東西,你的'CMATRIX ::運算符[]'可能毀了你的行,因爲你回來一個'CMatrixRow'的副本,稍後將調用'〜CMatrixRow'並可能刪除'row'。改爲返回對您的行的引用。此外,爲你的行使用'std :: vector'或類似的類,爲你隱藏所有的內存事物。其實,你可以在這種情況下使用'std :: vector :: at'作爲例外... – Zeta 2013-04-05 22:38:03
好的一點,thanx – 2013-04-05 22:39:05
這是一個學校作業,我禁止使用std :: vector – 2013-04-05 22:49:17