From 7ded24a34b778997207f1f3b795491289277cded Mon Sep 17 00:00:00 2001 From: YiHui Liu Date: Wed, 18 May 2022 23:27:05 +0800 Subject: [PATCH] fix: matrix init and assignment --- G4.code-workspace | 3 ++- include/Matrix.h | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/G4.code-workspace b/G4.code-workspace index 79e8674..21e9d73 100644 --- a/G4.code-workspace +++ b/G4.code-workspace @@ -119,7 +119,8 @@ "style_parser": "cpp", "vmanip": "cpp", "element": "cpp", - "tree": "cpp" + "tree": "cpp", + "vertices": "cpp" } } } \ No newline at end of file diff --git a/include/Matrix.h b/include/Matrix.h index 3888598..b7e7568 100644 --- a/include/Matrix.h +++ b/include/Matrix.h @@ -41,10 +41,11 @@ matrix::matrix(int n, int m) { template matrix::matrix(const matrix& A) { - size_t number = A.n * A.m; + n = A.n, m = A.m; element = new T*[n]; for (int i = 0; i < n; i++) element[i] = new T[m]; - std::copy(A.element, A.element + number, element); + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) element[i][j] = A.element[i][j]; } template @@ -54,10 +55,11 @@ template matrix& matrix::operator=(const matrix& A) { if (this != &A) { delete[] element; - size_t number = A.n * A.m; + n = A.n, m = A.m; element = new T*[n]; for (int i = 0; i < n; i++) element[i] = new T[m]; - std::copy(A.element, A.element + number, element); + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) element[i][j] = A.element[i][j]; } return *this; }