Инициализировать матрицу 2×2 в конструкторе класса по умолчанию

Я пытаюсь создать матричный класс 2×2 в C ++ и хочу инициализировать матрицу идентичной матрицей через конструктор по умолчанию. Мой класс это:

class Matrix2x2
{
public:
Matrix2x2();
void setVal(int row, int col, double newVal);

private:
double n[2][2];
};

void Matrix2x2::setVal(int row, int col, double newVal)
{
n[row][col] = newVal;
}

Я пробовал пару разных конструкторов, но никто из них не делает то, что я хочу.

Matrix2x2::Matrix2x2(): setVal(0,0,1), setVal(0,1,0), setVal(1,0,0), setVal(1,1,1)
{  }

а также

 Matrix2x2::Matrix2x2(): n[0][0](1), n[0][1](0), n[1][0](0), n[1][1](1)
{  }

Я понимаю, что это где-то простая ошибка, но я не могу ее найти, есть идеи?

3

Решение

Вы можете использовать агрегат массива:

class Matrix2x2 {
public:
Matrix2x2() : n({{3,1},{4,7}}) {
}
void setVal(int row, int col, double newVal);
private:
double n[2][2];
};

Демо на Ideone.

2

Другие решения

В C ++ 11:

Matrix2x2::Matrix2x2(): n{{1,0},{0,1}} {}

Исторически, вы не могли инициализировать массивы в списке инициализаторов, поэтому, если вы застряли в прошлом, вам придется присваивать значения в теле конструктора:

Matrix2x2::Matrix2x2()
{
n[0][0] = 1;  // or setVal(0,0,1) if you prefer
n[0][1] = 0;
n[1][0] = 0;
n[1][1] = 1;
}
2

Я пытаюсь создать матричный класс 2×2 в C ++ и хочу инициализировать матрицу идентичной матрицей через конструктор по умолчанию.

//constructor (inside class)
Matrix2x2()
{
n[0][0] = 1.0;
n[1][1] = 1.0;
n[0][1] = 0;
n[1][0] = 0;

}
1

или как это

Matrix2x2::Matrix2x2()
{
setVal(0,0,1);
setVal(0,1,1);
setVal(1,0,1);
setVal(1,1,1);
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector