Ich lerne C++ und versuche, eine einfache Matrix-Klasse zu konstruieren. Der grundlegende Fall habe ich definiert die Matrix-Klasse wie:Einfache Matrix-Klasse, Fehler: Aufruf des privaten Konstruktors
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();
}
Und Konstruktor/Destruktor sind:
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;
}
Problem: wenn ich die Klasse Matrix instanziiert von Matrix my_matrix(2,3)
Aufruf, erhalte ich die folgende Fehler: error: calling a private constructor of class 'Matrix'
, error: variable of type 'Matrix' has private destructor
.
Frage: Warum passiert das? Wie kann ich verstehen, was scheitert? Könnte jemand mich auf die Lösung/das Lesematerial hinweisen, um mir zu helfen, dieses Problem zu verstehen. Danke fürs Helfen!
Du für mehr Schmerzen werden durch Zeiger statt 'std :: vector d verwendet;' –
PaulMcKenzie
@PaulMcKenzie Ich verfolge ein Buch über C++ und Finanzen (durch Schlogl), könnte es veraltet sein. Danke, dass du das unterstrichen hast! –
Ich weiß nicht, ob es veraltet ist oder nur veralteten Lehrstil verwendet. Was Sie jetzt haben, ist für eine Matrix-Klasse nicht geeignet, wenn Sie mit dem Kopieren, Zurückgeben oder Übergeben von Matrix-Objekten beginnen möchten. Lesen Sie die Regel 3/5/0 nach. – PaulMcKenzie