was ich erreichen möchte, ist es, eine Vorlage Matrix-Klasse zu halten, aber es gibt einige Fehler (etwa 30 Fehler, die viel ist), die ich nicht wirklich verstehe. bitte helfen !! einige der Fehler: 'Bezeichner': undeclared Bezeichner, zeigt es für Spalte, Zeile und T. nicht erkennbare Vorlage Deklaration/Definition. 'Operator < <': sieht wie eine Funktionsdefinition aus, aber es gibt keine Parameterliste. Syntaxfehler: ‚‘C++ Vorlagenklasse. Ich habe einen Fehler, den ich nicht verstehe. etwa 30 von ihnen
template <int row, int col, typename T>
ostream& operator<<(ostream& out, const Matrix<row, col,T>& other)
{
return other.print(out);
}
template <int row, int col, typename T>
Matrix<row, col, T>& operator+(T number, const Matrix<row, col, T>& other)
{
Matrix<other.getRow(), other.getCol(), T> numMat(number);
return (numMat + other);
}
template <int row, int col, typename T = int>
class Matrix {
public:
Matrix(T number);
Matrix();
Matrix(const Matrix<row, col, T>& other);
int getRow();
int getCol();
Matrix& operator+(const Matrix<row, col, T>& other);
Matrix& operator-(const Matrix<row, col, T>& other);
Matrix& operator+(T number);
Matrix& operator-(T number);
Matrix& operator++();
Matrix& operator--();
Matrix& operator++(int);
Matrix& operator--(int);
Matrix& operator*(T number);
T& operator()(int a, int b);
ostream& print(ostream& out) const;
T trace();
~Matrix();
private:
int _row, _col;
T** matrix;
};
template <int row, int col, typename T>
Matrix<row, col, T>:: Matrix(T number) {
_row = row;
_col = col;
matrix = new T*[_row];
for (int i = 0; i < row; i++) {
matrix[i] = T[_col];
}
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
matrix[i][j] = number;
}
}
}
template <int row, int col, typename T = int >
Matrix<row, col, T>::Matrix() {
_row = row;
_col = col;
matrix = new T*[_row];
for (int i = 0; i < _row; i++) {
matrix[i] = T[_col];
}
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
matrix[i][j] = 1;
}
}
}
template <int row, int col, typename T>
Matrix<row, col, T>::Matrix(const Matrix<row, col, T>& other) {
_row = other._row;
_col = other._col;
matrix = new T*[_row];
for (int i = 0; i < _row; i++) {
matrix[i] = new T[_col];
}
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
matrix[i][j] = other.matrix[i][j];
}
}
}
template <int row, int col, typename T>
int Matrix<row, col, T>::getRow() {
return _row;
}
template <int row, int col, typename T>
int Matrix<row, col, T>::getCol() {
return _col;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator+(const Matrix<row, col, T>&
other) {
Matrix<getRow(), getCol(), T> mat1;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _row; j++) {
mat1.matrix[i][j] = matrix[i][j] + other.matrix[i][j];
}
}
return mat1;
}
template <int row, int col, typename T>
Matrix<row, col, T><row, col, T>::operator-(const Matrix<row, col, T>& other) {
Matrix<getRow(), getCol(), T> mat1;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _row; j++) {
mat1.matrix[i][j] = matrix[i][j] - other.matrix[i][j];
}
}
return mat1;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator+(T number) {
Matrix<getRow(), getCol(), T> mat1;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
mat1.matrix[i][j] = matrix[i][j] + number;
}
}
return mat1;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator-(T number) {
Matrix<getRow(), getCol(), T> mat1;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
mat1.matrix[i][j] = matrix[i][j] - number;
}
}
return mat1;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator++() {
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
++matrix[i][j];
}
}
return *this;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator--() {
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
--matrix[i][j];
}
}
return *this;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator++(int) {
Matrix<row, col, T> tmp(Matrix);
++(*this);
return tmp;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator--(int) {
Matrix<row, col, T> tmp(Matrix);
--(*this);
return tmp;
}
template <int row, int col, typename T>
Matrix<row, col, T>& Matrix<row, col, T>::operator*(T number) {
Matrix<getRow(), getCol(), T> mat;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
mat.matrix[i][j] = matrix[i][j] * number;
}
}
return mat;
}
template <int row, int col, typename T>
T& Matrix<row, col, T>::operator()(int a, int b) {
if (a < _row && b < _col) {
return matrix[a][b];
}
return NULL;
}
template <int row, int col, typename T>
const ostream& Matrix<row, col, T>::print(ostream& out) const {
for (int i = 0; i < _row; i++) {
out << matrix[i] << std::endl;
}
return out;
}
template <int row, int col, typename T>
T Matrix<row, col, T>::trace() {
T tr;
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
tr += matrix[i][j];
}
}
return tr;
}
template <int row, int col, typename T>
Matrix<row, col, T>::~Matrix() {
for (int i = 0; i < _row; i++) {
delete[]matrix[i];
}
delete[]matrix;
}
Sollen wir die Fehler erraten? – EdChum
die Fehler nicht angezeigt werden, wenn die Kopfzeile allein ist, agieren sie, wenn die Quelldatei hinzugefügt wird, die ich nicht ändern kann, von denen ich denke, dass das Hauptproblem sein kann –
nicht erkennbare Vorlage Deklaration/Definition –