Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
class Array
{
int n;
int *arr = new int[n];
public:
Array(int n) : n(n)
{ }
Array operator[](int);
void display()
{
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
int get_n()
{
return n;
}
~Array()
{
delete[] arr;
}
};
int main()
{
setlocale(LC_ALL, "rus");
Array a1(12), a2(5);
for (int i = 0; i < 12 ; i++)
{
a1[i] = i * 2;
}
a1.display();
system("pause");
return 0;
}
Array Array::operator[](int j)
{
return arr[j];
}
Где здесь ошибка? Что-то в выделении памяти?
Ошибки при компиляции тут нет. Ошибка при выполнении - да, это есть.
Что вы возвращаете тут?
Array Array::operator[](int j)
{
return arr[j];
}
Новый объект Array
с количеством членов, равным значению arr[j]
. А потом пытаетесь присвоить ему что-то - с помощью генерируемого по умолчанию оператора присваивания. Т.е. делаете полную ерунду, которую долго расписывать (да и нужно ли?)...
Вы явно хотели следующее:
int& Array::operator[](int j)
{
return arr[j];
}
Вы инициализируете указатель не в конструкторе, а сразу в обьявлении
class Array
{
int n;
int *arr = new int[n];
//...
естественно у вас будет и ошибка компиляции... Может вы просто проявили невнимательность, но нужно так:
class Array
{
int n;
int *arr;
public:
Array(int n) : n(n), arr( new int[n] )
{ }
//...
};
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу вывести График, после нажатой кнопкиНо у меня окошко появляется и сразу исчезает
Недавно решил перейти к изучению С++ и QT (до этого изучал Си) и хотел прояснить несколько вещей для себяПрошу не ругать меня строго, так как...
Помогите, пожалуйста, решить задачу по программированию в с++Разбить элементы массива на группы по 4
Неправильно сравнивает 2 массива, вместо false(-) выдает true(+)В чем проблема? (Функция помечена комментарием)