Другие языки программирования и технологии

динамический массив в Visual C++

Всем привет)) Есть класс, его 2 поля должны быть динамическими массивами, размерность заранее не известна и вычисляется в одном из методов. Делаю так: class TMultinominal{ private: int coef_mas,//первый динамический массив step_mas,//второй динамический массив //и т.д. } Далее в методе переопределяю размерность: coef_mas = *new int[temp_n]; step_mas = *new int[temp_n]; на этом этапе пока всё хорошо. Но стоит только попытаться положить что-либо в элемент массива: step_mas[now_work_with] = 0; как вылетает ошибка error C2109: subscript requires array or pointer type Что я не так делаю? :):):)
Кратко: все.
Объявление:
int *coef_mas, *step_mas, ..
Это ведь указатели, а не целые. По крайней мере, должны быть.
coef_mas = *new int[temp_n];
Вообще супер. Ты создаешь массив (new int[temp_n]), его адрес, ес-но, лежит во временной переменной. Ты берешь адрес этой переменной (*) и заносишь его в coef_mas, неявно преобразуя в int.
Ну а step_mas[now_work_with] - это сдвиг на now_work_with слов от той временной переменной. Т. е. совершенно неопределенный адрес. Хорошо еще, что вылетает - а мог и вешаться...
Игорь Комиссаров
Игорь Комиссаров
65 892
Лучший ответ
В классе должны быть указатели на int.
Григорий Шляпин А как правильно то мне написать? Примерчику был бы рад очень))))
Звездочки попутал
class TMultinominal{
private:
int *coef_mas, //первый динамический массив
*step_mas, //второй динамический массив
//и т. д.
}

Далее в методе переопределяю размерность:
coef_mas = *new int[temp_n]new int[temp_n];
step_mas = *new int[temp_n]new int[temp_n];
Я бы сказал std::vector<int>
step_mas, //второй динамический массив

С С++ не знаком, но для массива step_mas, ты кажись не указал тип элементов.
Григорий Шляпин не, указал....там инт касается обоих массивов, они через запятую))))
Игорь Комиссаров Ты совершенно прав. С С++ ты не знаком
int temp_n= 100; // изменяешь как тебе надо, но массив надо тоже переопределять)
...
...
int *coef_mas, //первый динамический массив и *
int *step_mas, //второй динамический массив и *
...

coef_mas = new int[temp_n]; // без *
step_mas = new int[temp_n]; // без *

if(now_work_with < temp_n) // смотри что бы за пределы памяти не вылезал) которую ипользуешь
step_mas[now_work_with] = 0;
else
error;