我有下一个代码,但我不知道如何解决 mult 函数。编译器向我发送一条消息,无法将参数“a”声明为“Matriz”类型
我应该完全使用主要的代码
该消息 无法将参数“a”声明为“Matriz”类型
enter code here
#include <iostream>
#include <iomanip>
using namespace std;
// Base
class IMatriz {
int **m;
int numRows;
int numColumns;
public:
IMatriz(){
numRows = 0;
numColumns = 0;
m = NULL;
}
IMatriz(int r, int c) {
numRows = r;
numColumns = c;
m = new int* [numRows];
for(int i=0; i < numRows; i++)
m[i] = new int [numColumns];
}
virtual void setSize(int r, int c) = 0;
virtual void setValue(int row, int col, int val) = 0;
virtual int getValue(int row, int col) = 0;
virtual int getNumRows() = 0;
virtual int getNumColumns() = 0;
virtual void mult(IMatriz a, IMatriz b) = 0;
virtual void print(void) = 0;
};
// Inherited
class Matriz : public IMatriz {
protected:
int **m;
int numRows;
int numColumns;
public:
Matriz()
: IMatriz()
{
}
Matriz(int r, int c)
: IMatriz(r, c)
{
numRows = r;
numColumns = c;
m = new int* [numRows];
for(int i=0; i < numRows; i++)
m[i] = new int [numColumns];
}
void setSize(int r, int c);
void setValue(int row, int col, int val);
int getValue(int row, int col);
int getNumRows();
int getNumColumns();
void mult(Matriz a, Matriz b);
void print();
};
// Functions
void Matriz::setSize(int r, int c) {
numRows = r;
numColumns = c;
}
void Matriz::setValue(int row, int col, int val) {
m[row][col] = val;
}
int Matriz::getValue(int row, int col) {
return m[row][col];
}
int Matriz::getNumRows() {
return numRows;
}
int Matriz::getNumColumns() {
return numColumns;
}
**void Matriz::mult(Matriz a, Matriz b) {**
// m.setSize( a.getNumRows(), b.getNumColumns() );
// for (int rows = 0; rows < numRows; rows ++)
// for (int cols = 0; cols < numColumns; cols ++)
// m[rows][cols] = 0;
// for (int rows = 0; rows < a.getNumRows(); rows ++)
// for (int cols = 0; cols < b.getNumColumns(); cols ++)
// for (int auxl = 0; auxl < a.getNumColumns(); auxl ++)
// m[rows][cols] += (a[rows][auxl] * b[auxl][cols]);
return;
}
void Matriz::print() {
for (int rows = 0; rows < numRows; rows ++)
{
for (int cols = 0; cols < numColumns; cols ++)
cout << m[rows][cols] << " ";
cout << endl;
}
}
// Principal
int main() {
Matriz m;
Matriz a(3, 2);
Matriz b(2, 3);
a.setValue(0,0,7);
a.setValue(0, 0, 7);
a.setValue(1, 0, 1);
a.setValue(2, 0, 8);
a.setValue(0, 1, 2);
a.setValue(1, 1, 5);
a.setValue(2, 1, 6);
b.setValue(0, 0, 2);
b.setValue(1, 0, 3);
b.setValue(0, 1, 5);
b.setValue(1, 1, 4);
b.setValue(0, 2, 8);
b.setValue(1, 2, 9);
a.print();
b.print();
// m.mult(a,b);
// m.print();
return 0;
}