Статические методы класса
Помогите, пожалуйста, разобраться с вопросом по статическим методам класса. Есть задача: написать класс Матрица, в котором должны быть добавлены статические методы класса, которые создают нулевую и единичную матрицы указанного размера. Пыталась сделать по условию, а именно передавать размер в эти методы, но не понимаю, как довести до конца, если в статическом методе можно обращаться только к статическим полям, а все поля у меня в классе сделаны нестатическими. Получилось сделать, передав в метод указатель на объект класса и дальше уже с ним работать, но это выглядит, как по мне, не совсем по условию и как-то сложно... Может, есть идеи попроще и более подходящие к условию (а именно, чтоб размер передавался в метод)? Код:
template <class T>
class matrix {
private:
T** mm; // матрица
int r; // количество строк
int c; // количество столбцов
public:
matrix() {
r = 0;
c = 0;
mm = nullptr;
}
matrix(int r, int c) {
this->r = r;
this->c = c;
mm = new T*[r];
for (int i = 0; i < r; i++)
mm[i] = new T[c];
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
mm[i][j] = 0;
}
//...
static void one_matr(matrix* b) {
for ( int i = 0; i < (*b).r; i++)
for ( int j = 0; j < (*b).r; j++)
if (i == j )
(*b).mm[i][j] = 1;
else
(*b).mm[i][j] = 0;
}
};
int main() {
matrix<int> M2(2, 2);
matrix<int>::one_matr(&M2);
std::cout << M2; //перегрузка оператора вывода в поток в классе есть
return 0;
}