Как изменять значения переменных другого класса в 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? Заполнять я его хотел тоже из класса матрица

21 Авг 2019 в 07:04
228 +1
0
Ответы
1

Для изменения значений элементов двумерного массива в классе 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.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 913 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир