Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2019, 07:40   #1
Alexei2515
Новичок
Джуниор
 
Регистрация: 03.10.2019
Сообщений: 1
По умолчанию Перенос динамического массива из класса в класс

Здравствуйте! Никак не могу разобраться. Есть 2 класса 1) Array; 2)Raschet. В первом классе(Array) хранится динамический массив.
Как сделать так чтобы можно было бы работать с этим массивом во втором классе (Raschet) (Делать расчеты с ним(к примеру посчитать сумму всех X-ов), реализовать его вывод). Подскажите пожалуйста кто знает. Никак не могу сообразить.


Код:
#include<iostream>
 
using namespace std;
class Raschet;
class Array
{
    friend Raschet;
private:
    int *x, *y;
 
    int N;
public:
    Array() //конструктор без параметров
    {
        N = 1;
        x = new int[N];
        y = new int[N];
        for (int i = 0; i < N; i++) {
            x[i] = 0;
            y[i] = 0;
        }
    }
    Array(int n) //конструктор с одним параметром
    {
        N = n;
        x = new int[N];
        y = new int[N];
        set();
    }
 
    Array(const    Array & source) //конструктор копирования
    {
        N = source.N;
        x = new int[N];
        y = new int[N];
        for (int i = 0; i < N; i++){
            x[i] = source.x[i];
 
            y[i] = source.y[i];
 
 
        }
 
    }
 
    int getsize() //возвращение размера массива
    {
        return N;
    }
 
    void print() //отбразить массив
    {
        for (int i = 0; i < N; i++) {
            cout << "X [" << i << "] " << x[i] << "  " << endl;
    
        }
        cout << endl;
        for (int i = 0; i < N; i++) {
 
 
            cout << "Y [" << i << "] " << y[i] << "  " << endl;
        }
        cout << endl;
 
    }
 
 
 
    void set() //ввод  элементов
    {
 
        for (int i = 0; i < N; i++)  {
            cout << "Введите  X [" << i << "] ";
            cin >> x[i];
            cout << "Введите Y [" << i << "] ";
 
            cin >> y[i];
        }
    }
int GetX(){
    for (int i = 0; i < N; i++)
 
 
 
        return x[i];
 
        
 
    }
    ~Array() //деструктор
    {
        delete[]x, y; //освобождение памяти
    }
 
 
 
};
class Raschet{
private:
 
 
public:
 
    int sumx = 0;
 
 
    //void summaX(){
    //  Array x;
    //  x.GetX;
    //  sumx = sumx + x;
 
    //}
 
 
 
 
 
 
};
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    int n;
    
    cout << "Введите размер массива: ";
    cin >> n;
    Array x(n);
 
 
    cout << "Массив" << endl;
    x.print();
    
    
    system("pause");
    return 0;
}
Alexei2515 вне форума Ответить с цитированием
Старый 03.10.2019, 08:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

1. Если вы делаете класс Array, то делайте по нормальному с геттерами/сеттерами или [], at.
2. Передавайте ваш объект в Raschet параметром - в зависимости от задачи ссылкой или мувом.
3. И поправьте ошибки:
Код:
 return x[i];
Всегда вернет x[0]. Зачем вам цикл тут?
Код:
 delete[]x, y; //освобождение памяти
Тут будет явно не то, что вы ожидаете. y не удалится.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Абстрактный класс динамического списка Dumbl-D Общие вопросы C/C++ 6 17.11.2014 18:28
класс динамического массива mixon-21 Помощь студентам 0 26.08.2013 19:25
роблема с созданием объекта динамического массива Класса GDA230105 C++ Builder 3 26.07.2011 09:25
Реализация метода Push для динамического класса Mixim Общие вопросы .NET 1 21.11.2010 11:12
Перенос данных из класса в класс zexak Общие вопросы по Java, Java SE, Kotlin 2 27.02.2010 20:03