Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
#1

Ошибка при передаче в скрытый параметр класса. - C++

16.01.2012, 19:17. Просмотров 618. Ответов 11
Метки нет (Все метки)

В функции считываю из входного файла некоторые значения(x1,x2,y1,y2,alph,omeg,rad,POG,park и тп) с помощью файлового потока. Программа верно инициализирует эти переменные.
Вот эта функция, считывания входного файла:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void inputroad(char* inptfl,ROADS* road[], int nor)  //Функция ввода свойств дорог из файла
{
    ifstream fl(inptfl,ios::in);
    char ch;
    if (fl)
    {
        cout <<"max itarate"<<'\n'<<nor;
        for (int i=0;i<nor;i++)
        {
            cout <<"inside the loop, itrate num " << i+1 << '\n';
            fl >> ch;
            cout <<"get letter of type of road"<<ch<<'\n';
            float x1,x2,y1,y2,alph,omeg,rad,POG,park;
                    int Mins,Maxs,line;
                    char dir;
            if(ch=='l')
            {       cout <<"inside switch l"<< '\n';
                    fl >> x1;cout << x1<<'\n';
                    fl >> y1;
                    fl >> x2;
                    fl >> y2;
                    fl >> POG;
                    fl >> park;
                    fl >> Mins;
                    fl >> Maxs;
                    fl >> dir;
                    fl >> line;cout << line<<'\n';
                    road[i]->make_R (x1,y1,x2,y2,NullForCircle,NullForCircle,NullForCircle, POG,  park,Mins,Maxs, ch, dir, line);
                    cout <<"make road"<< '\n';
                    cout <<road[i]->ret_X0();cout <<road[i]->ret_Y0();cout <<road[i]->ret_X1();cout <<road[i]->ret_Y1();
            }
            else
            {
                cout <<"inside switch c"<< '\n';
                fl >>x1; fl >>y1; fl>>rad;fl>>alph;fl>>omeg; fl >> POG; fl >> park; fl >> Mins; fl >> Maxs; fl >> dir;  fl >> line;
                road[i]->make_R(x1,y1,0,0,rad,alph,omeg,POG,park,Mins,Maxs,ch,dir,line);//ошибка
            }
        };
            fl.ignore(1000,'\n');
            cout<<"go to the next string";
    }
};
Далее по ходу программы вызывается метод класса ROADS, к которому принадлежит объект road[i].
В нижеприведённый метод передаются значения, полученный во входном файле(передаются верно), но программа отказывается присваивать скрытое значение в нижеприведённом методе. Типы скрытых параметров и соответствующих значений совпадают и должны присваиваться без преобразований.

C++
1
2
3
4
5
6
7
8
9
10
11
void make_R (float x0,float y0,float x1,float y1,float rad,float alph, float omeg,float POG,
                 float park,int mins,int maxs,char rdt,char dir,int line)//Конструктор для дорог
           {
               cout<<"inside make_R"<<'\n';
               cout<< x0 <<' '<<y0<<' '<<x1<<' '<<y1<<' '<<rad<<' '<<alph<<' '<<omeg<<' '<<POG<<' '<<park<<' '<<mins<<' '<<maxs<<' '<<rdt<<' '<<dir<<' '<<line;
               X0=x0;cout<<"x0"; Y0=y0;X1=x1;Y1=y1;
               radius=rad;alpha=alph;omega=omeg;
               PointOfGrav=POG;PARK=park;
               minspeed=mins;maxspeed=maxs;
               roadtype=rdt;direction=dir;lines=line;
           };
Пожалуйста, подскажите в чём ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 19:17     Ошибка при передаче в скрытый параметр класса.
Посмотрите здесь:
Remove_if - при передаче функции класса выдает ошибки C++
C++ Скрытый параметр - казатель this.
При передачи указателя на обьект ошибка,а при передаче ссылки на указатель нет. Почему? C++
C++ Ошибка при передаче структуры
C++ Ошибка при передаче в функцию
Ошибка при передаче результата функции C++
C++ Ошибка при передаче параметра в функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
16.01.2012, 19:27     Ошибка при передаче в скрытый параметр класса. #2
ябыможетпрочиталэтовсерукоблудствоеслибытольконерябилотаквглазахотэтогоколичествабукв
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 19:32  [ТС]     Ошибка при передаче в скрытый параметр класса. #3
Если трудночитаемо, то подскажите как сделать лучше - исправлю.
igorrr37
1642 / 1270 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
16.01.2012, 19:56     Ошибка при передаче в скрытый параметр класса. #4
какие ошибки выдаёт?
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 20:17  [ТС]     Ошибка при передаче в скрытый параметр класса. #5
Сам компилятор - никаких. Программа выводит "Инструкция по адресу 0x0042161a обратилась к памяти по адресу 0x005c0032. Память не может быть written.
zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,129
Завершенные тесты: 1
16.01.2012, 20:26     Ошибка при передаче в скрытый параметр класса. #6
Скорее всего, Вы присваиваете значение элементу, которому память не выделена.
Проверьте, действительно ли road[i] существуют для все значений i.
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 20:48  [ТС]     Ошибка при передаче в скрытый параметр класса. #7
Таким образом я инициализирую массив объектов, где NumOfRoad переменная, заранее инициализированная. Вроде при NumOfRoad=3 должны сужествовать ROAD[0] ROAD[1] и ROAD[2]?
C++
1
ROADS* ROAD[NumOfRoad];
zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,129
Завершенные тесты: 1
16.01.2012, 21:04     Ошибка при передаче в скрытый параметр класса. #8
В функцию inputroad(char* inptfl,ROADS* road[], int nor)
передается к-во объектов nor проверьте в отладчике,
правильный ли он.
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 21:16  [ТС]     Ошибка при передаче в скрытый параметр класса. #9
В коде есть строка
C++
1
cout <<"max itarate"<<'\n'<<nor;
она верно выводит, что nor=3.
zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,129
Завершенные тесты: 1
16.01.2012, 21:28     Ошибка при передаче в скрытый параметр класса. #10
Тогда остается одно. Ставьте в начале функции останов,
а потом по шагам дойдите до строки, где ошибка и посмотрите
значения переменных.
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 21:47  [ТС]     Ошибка при передаче в скрытый параметр класса. #11
В коде метода практически то же самое. Ошибка происходит при присвоении скрытого параметра X0 класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 21:48     Ошибка при передаче в скрытый параметр класса.
Еще ссылки по теме:
C++ ошибка в коде при идеальной передаче
Ошибка при передаче двумерного массива в функцию C++
C++ Может ли быть ошибка при передаче данных?
C++ Ошибка при передаче двумерного массива в функцию
Ошибка при передаче в функцию указателя на элемент массива C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,129
Завершенные тесты: 1
16.01.2012, 21:48     Ошибка при передаче в скрытый параметр класса. #12
поставьте останов перед присваиванием и посмотрите адрес X0.
Yandex
Объявления
16.01.2012, 21:48     Ошибка при передаче в скрытый параметр класса.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru