Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20

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

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

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

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;
           };
Пожалуйста, подскажите в чём ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2012, 19:17
Ответы с готовыми решениями:

Remove_if - при передаче функции класса выдает ошибки
#include &lt;QCoreApplication&gt; #include &lt;vector&gt; using namespace std; template &lt;class T&gt; class c_equ { protected: T equ; ...

Скрытый параметр - казатель this.
Всё написал так. как было написано в листинге 8.8 книги Jessie Liberty. После нажатия на кноку &quot;компилировать&quot; компилятор выдаёт...

При передачи указателя на обьект ошибка,а при передаче ссылки на указатель нет. Почему?
Hi All! class SomeObj { public: int x; }

11
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
16.01.2012, 19:27
ябыможетпрочиталэтовсерукоблудствоеслибы тольконерябилотаквглазахотэтогоколичеств абукв
0
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 19:32  [ТС]
Если трудночитаемо, то подскажите как сделать лучше - исправлю.
0
 Аватар для igorrr37
2895 / 2042 / 992
Регистрация: 21.12.2010
Сообщений: 3,791
Записей в блоге: 9
16.01.2012, 19:56
какие ошибки выдаёт?
0
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 20:17  [ТС]
Сам компилятор - никаких. Программа выводит "Инструкция по адресу 0x0042161a обратилась к памяти по адресу 0x005c0032. Память не может быть written.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
16.01.2012, 20:26
Скорее всего, Вы присваиваете значение элементу, которому память не выделена.
Проверьте, действительно ли road[i] существуют для все значений i.
1
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 20:48  [ТС]
Таким образом я инициализирую массив объектов, где NumOfRoad переменная, заранее инициализированная. Вроде при NumOfRoad=3 должны сужествовать ROAD[0] ROAD[1] и ROAD[2]?
C++
1
ROADS* ROAD[NumOfRoad];
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
16.01.2012, 21:04
В функцию inputroad(char* inptfl,ROADS* road[], int nor)
передается к-во объектов nor проверьте в отладчике,
правильный ли он.
0
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 21:16  [ТС]
В коде есть строка
C++
1
cout <<"max itarate"<<'\n'<<nor;
она верно выводит, что nor=3.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
16.01.2012, 21:28
Тогда остается одно. Ставьте в начале функции останов,
а потом по шагам дойдите до строки, где ошибка и посмотрите
значения переменных.
0
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
16.01.2012, 21:47  [ТС]
В коде метода практически то же самое. Ошибка происходит при присвоении скрытого параметра X0 класса.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
16.01.2012, 21:48
поставьте останов перед присваиванием и посмотрите адрес X0.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2012, 21:48
Помогаю со студенческими работами здесь

Ошибка при передаче структуры
Пишу в тему для начинающих, ибо жестко туплю с данным вопросом. Есть метод: Fuse_Interpretate::clearStruct(PS)//!!!!!!!!!!!! {...

Ошибка при передаче в функцию
Хочу передать в функцию строку и там ее заполнить, подчеркивает void karta(MyStruct s.karta,int size); И пишет: 1 IntelliSense:...

ошибка в коде при идеальной передаче
Здравствуйте, есть код и ошибка в нем: template&lt;typename T&gt; struct extension { extension&lt;T&gt;&amp; get(T&amp;&amp; value) { obj =...

Ошибка при передаче параметра в функцию
В ДЗ есть пример кода, помогите пожалуйста исправить, до работающего варианта (VS2015). Ошибки: (32) error C2660: strcpy_s: функция не...

Ошибка при передаче результата функции
Оператор + возвращает правильное значение (по крайней мере в конце его тела я вывожу полученный список, и все верно, он возвращает его по...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru