Я работаю над упражнением по перегрузке оператора.Я создал матричный класс и должен перегрузить операторы, чтобы эффективно выполнять арифметику с матрицами.
Мои указания говорят, что я должен создать два матричных массива, используя конструктор класса, который имеет 2 параметра, и третий матричный массив, который будет использоваться для хранения результата арифметики с использованием конструктора по умолчанию (1 параметр).
Поскольку я собираюсь использовать эти массивы для перегрузки операторов, они должны быть членами данных класса (я думаю).Однако я подумал, что классы должны быть как можно более репрезентативными для реальных вещей, поэтому создание матричного класса с несколькими массивами не имеет смысла для меня (матрица - это всего лишь одна матрица).
Я неправильно понимаю классы или есть другой способ создания дополнительных матриц с использованием конструктора классов, о котором я не думаю?Спасибо всем, вот код, о котором идет речь.
class matrix
{
friend ostream& operator << (ostream&, const matrix&); // << overloader
private:
int size // size indicates length of rows and cols, so size 3 means a 3 x 3 matrix
int array[10][10];
public:
matrix(int);
matrix(int, int);
};
matrix:: matrix (int sizeIn) //default constructor, use to make result matrix
{
int MAX_SIZE = 10;
if (0 > sizeIn && sizeIn > 10)
{
size = MAX_SIZE;
}
else
{
size = sizeIn;
}
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
array[i][j] = 0;
}
matrix:: matrix (int sizeIn, int rangeIn) //use to make first 2 matrices that will be added
{
int range;
int MAX_SIZE = 10;
int MAX_RANGE = 20;
if (0 > sizeIn && sizeIn > 10)
{
size = MAX_SIZE;
}
else
{
size = sizeIn;
}
if (0 > rangeIn && rangeIn > 20)
{
range = MAX_RANGE;
}
else
{
range = rangeIn;
}
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
array[i][j] = (rand() % (2 * range + 1) - range); //random number for each index
}
ostream & operator << (ostream & os, const matrix & arrayPrint) // << overloader
{
for (int i = 0; i < arrayPrint.size; i++)
{
cout << '|';
for (int j = 0; j < arrayPrint.size; j++)
{
os << setw(4) << arrayPrint.array[i][j] << " ";
}
os << setw(2) << '|' << endl;
}
return os;
}