0
私はC++を学び、単純なMatrixクラスを構築しようとしています。単純なMatrixクラス、エラー:プライベートコンストラクタを呼び出す
class Matrix {
int r; // number of rows
int c; // number of columns
double* d; // array of doubles to hold matrix values
Matrix(int nrows, int ncols, double ini = 0.0);
~Matrix();
}
コンストラクタ/デストラクタは次のとおりです:
Matrix::Matrix(int nrows, int ncols, double ini) {
r = nrows;
c = ncols;
d = new double[nrows*ncols];
for (int i = 0; i < nrows*ncols; i++) d[i] = ini;
}
Matrix::~Matrix() {
delete[] d;
}
問題:私はMatrix my_matrix(2,3)
を呼び出すことにより、クラスのマトリックスをインスタンス化するとき、私は次のことを得るように私が持っている基本的なケースは、Matrixクラスを定義しますエラー:error: calling a private constructor of class 'Matrix'
、error: variable of type 'Matrix' has private destructor
。
質問:なぜこれが起こっていますか?何が失敗しているのか理解するにはどうすればいいですか?誰かが私にこの問題を理解させるのに役立つ解決策/読書資料を指摘することができますか?助けてくれてありがとう!
あなたが代わりに 'のstdのポインタを使用することにより、より痛みのためになります::ベクトル D;' –
PaulMcKenzie
@PaulMcKenzie私はC++の本以下と金融てる(でSchlogl)、古いかもしれません。それを指摘してくれてありがとう! –
古くなっているのか、旧式の教授様式を使用しているのか分かりません。 'Matrix'オブジェクトのコピー、返却、または渡しを目的としているのであれば、Matrixクラスにはこれで十分ではありません。 3/5/0のルールを読んでください。 – PaulMcKenzie