Как изменять значения переменных другого класса в C++? В общем задача такова, есть 2 класса: класс массив и класс матрица. Класс массив - это класс, полем которого является одномерный массив, а класс матрица - класс, полем которого является одномерный массив обьектов типа массив. таким образом в классе матрица у нас поле будет двумерный массив. У меня возникла проблема, что я не могу менять значения элементов двумерного массива в классе матрица. Вот исходный код:#include #include #include using namespace std; class matrica; class massiv { public: int x[5]; massiv(){ for (int i = 0; i < 5; i++){ x[i] = rand() % 21 - 10; cout << setw(4) << x[i]; } cout << endl; } int operator [](int i) { return x[i]; } friend matrica; }; class matrica {
public: massiv y[5]; matrica(){ cout << y[0][0];//все прекрасно выводится /*но если попробовать сделать y[0][0]+=1; то выводится ошибка "выражение должно быть допустимым для изменения левосторонним значением"*/ } int operator [](int i) { return y[i][0]; /*совершенно непонятно, какую роль здесь играет [0], и почему не работает с просто return y[i]... при изменении [0] на любое другое число, результат не меняется...*/ } }; void main(){ srand(time(NULL)); matrica example; system("pause"); } как можно изменять значения конкретного элемента этого двумерного массива из класса matrica? Заполнять я его хотел тоже из класса матрица
Для изменения значений элементов двумерного массива в классе matrica вы можете создать метод в классе matrica, который будет принимать индексы элемента, которые вы хотите изменить, и новое значение для этого элемента. Вот пример кода, который объясняет это:
#include <iostream> #include <ctime> #include <iomanip> using namespace std; class massiv { public: int x[5]; massiv() { for (int i = 0; i < 5; i++) { x[i] = rand() % 21 - 10; cout << setw(4) << x[i]; } cout << endl; } int &operator[](int i) { return x[i]; } }; class matrica { public: massiv y[5]; matrica() { cout << y[0][0] << endl; // Изменяем элемент двумерного массива changeElement(0, 0, y[0][0] + 1); cout << y[0][0] << endl; } int &operator[](int i) { return y[i][0]; } void changeElement(int i, int j, int newValue) { y[i][j] = newValue; } }; int main() { srand(time(NULL)); matrica example; system("pause"); return 0; }
В этом коде был добавлен метод changeElement в класс matrica, который принимает индексы i и j элемента, который нужно изменить, а также новое значение newValue. Внутри этого метода происходит изменение значения элемента двумерного массива в классе matrica.
Теперь вы можете изменять значения конкретного элемента этого двумерного массива, вызывая метод changeElement из класса matrica.
Для изменения значений элементов двумерного массива в классе matrica вы можете создать метод в классе matrica, который будет принимать индексы элемента, которые вы хотите изменить, и новое значение для этого элемента. Вот пример кода, который объясняет это:
#include <iostream>#include <ctime>
#include <iomanip>
using namespace std;
class massiv
{
public:
int x[5];
massiv()
{
for (int i = 0; i < 5; i++)
{
x[i] = rand() % 21 - 10;
cout << setw(4) << x[i];
}
cout << endl;
}
int &operator[](int i)
{
return x[i];
}
};
class matrica
{
public:
massiv y[5];
matrica()
{
cout << y[0][0] << endl;
// Изменяем элемент двумерного массива
changeElement(0, 0, y[0][0] + 1);
cout << y[0][0] << endl;
}
int &operator[](int i)
{
return y[i][0];
}
void changeElement(int i, int j, int newValue)
{
y[i][j] = newValue;
}
};
int main()
{
srand(time(NULL));
matrica example;
system("pause");
return 0;
}
В этом коде был добавлен метод changeElement в класс matrica, который принимает индексы i и j элемента, который нужно изменить, а также новое значение newValue. Внутри этого метода происходит изменение значения элемента двумерного массива в классе matrica.
Теперь вы можете изменять значения конкретного элемента этого двумерного массива, вызывая метод changeElement из класса matrica.