Я пытаюсь сделать простую вещь, но внезапно застрял между ними. Здесь, в моем коде, я пытаюсь вызвать конструктор, в котором я бы только передавал длину, мой первый конструктор инициализирует массив size = length всеми элементами 0.второй конструктор, вызванный в C++ (неправильный вывод)
Затем я передаю массив конструктору в дать ранее определенному массиву его значение
здесь образец:
class myvector
{
int *arr;
int length;
public :
myvector(int);
myvector(int *);
};
myvector :: myvector (int len)
{
arr = new int [length = len];
for (int i=0;i< length;i++)
{
arr[i] = 0;
}
}
myvector :: myvector (int *ex)
{
for (int i=0;i< length;i++)
{
cout << ex[i] << " " << length <<" ";
arr[i] = ex[i];
cout << arr[i]<< " ";
}
}
int main()
{
myvector v1(5);
int x[5] = {2,3,4,45,6};
v1 = x;
}
Вот в мою второй длине конструкторы, который был определен в первом constrcutor потерял свои ценности, а также массив обры теряют свои значения
Я что-то сделал? Просьба уточнить меня по этому вопросу
Прежде всего, вы никогда не выделять какой-либо памяти для '' arr' в ст 'array умирает сразу после окончания области конструкторов, вы будете иметь неопределенное поведение ... (то же самое касается второго конструктора, который просто пишет в нераспределенную память) – Scis
Почему бы просто не использовать [std :: vector] (http://www.cplusplus.com/reference/vector/vector/)? – user1810087
@Scis, я отредактировал, чтобы дать память, но все равно такая же ошибка, даже длина теряет значение. – Ke7in