Моя программа испытывает ошибку времени выполнения каждый раз, когда я раскомментирую l70-72.Я не впервые сталкиваюсь с этой конкретной проблемой.
Я делаю указатель на массив объектов, отправляю этот указатель в функцию, пытаюсь выполнить команды, определенные в этой функции, в main и получить время выполненияошибка, все при использовании кучи.Что-то явно происходит с этим указателем или с указателями в массиве.
Когда я вызываю manage_Rectangle_arr(string strCommand, Rectangle * *arr, short *siArrayL)
, возникает ошибка с любым из следующих: «заполнить массив», «получить области» и «пустое содержимое»(очевидно, что последние два связаны с «заполнением массива» по своей природе, так как им нужно, чтобы он выполнялся первым, чтобы функционировать)
void manage_Rectangle_arr(string, Rectangle * *, short*);
int main()
{
Rectangle * * arr;
short siArrayL=1;
manage_Rectangle_arr("make array", arr, &siArrayL);
manage_Rectangle_arr("fill array", arr, &siArrayL); //Problem here
manage_Rectangle_arr("get areas", arr, &siArrayL); //Problem here
manage_Rectangle_arr("empty contents", arr, &siArrayL); //Problem here
manage_Rectangle_arr("delete array", arr, &siArrayL);
}
void manage_Rectangle_arr(string strCommand, Rectangle * *arr, short *siArrayL)
{
if(strCommand=="make array")
arr = new Rectangle * [ *siArrayL];
if(strCommand=="fill array") //Problem here
for(short s=0; s< *siArrayL; ++s)
arr[s]= new Rectangle(1, 1);
if(strCommand=="get areas") //Problem here
for(short s=0; s< *siArrayL; ++s)
cout << arr[s]->getArea();
if(strCommand=="empty contents") //Problem here
for(short s=0; s< *siArrayL; ++s)
delete arr[s];
if(strCommand=="delete array")
delete [] arr;
}
//When I call manage_Rectangle_arr(string strCommand, Rectangle * *arr, short *siArrayL) with any of the following: "fill array", "get areas" and "empty contents" (obviously the last two are related to "fill array" in nature, since they need it to be executed first in order to function)
Полный исходный код C ++