@matveyvarg

Как заполнить динамически созданный массив?

Имеется класс, в котором есть атрибут int *koefs ; Далее этот массив инициализируется в конструкторе как:
this->koefs = new int[fn + 1]; //fn - передается в конструктор ( с этим все ок)

И заполняется :
for (i = 0; i <= fn ; i++)
	{	
		//srand(time(NULL));
		this->koefs[i] = random_at_most(99) 
		
	}

random_at_most - функция, возвращающая случайное значение. Также работает корректно.
В итоге в массиве только 1 элемент.
Нашел инфу, что c++ хранит только указатель. Но как тогда заполнить элементы массива?
Если есть возможность, хотелось бы не использовать вектора.
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Кода нет даже игрушечного, и гарантированно не скажешь. Я вижу три возможных причины.
1. Либо не прописан конструктор копирования или операции присваивания (а с деструктором всё в порядке). Указатели продолжают обращаться к освобождённой памяти, и по какому-то счастливому совпадению первый элемент совпадает.
2. Либо конфликт имён: fn — параметр конструктора и fn — внутреннее поле.
3. У вас тут закомментированное srand(time(NULL));. Я не знаю, что в функции random_at_most, но если там srand — перенеси его в другое место. Процессор работает в миллион раз быстрее, чем таймер. «Хочешь, чтобы было случайнее», а будут повторы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы