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

ошибка с указателями - C++

Восстановить пароль Регистрация
 
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 13:59     ошибка с указателями #1
надо создать двусвязный список! во второй строке ошибка, как от неё избавиться?

pt->prev=pg;
pg->next=pt;
pg=pt;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 13:59     ошибка с указателями
Посмотрите здесь:

C++ помогите с указателями
работа с указателями C++
C++ Непонятная ошибка с указателями
C++ Работа с указателями
C++ Знакомство с указателями. Синтаксическая ошибка.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.04.2012, 14:00     ошибка с указателями #2
криво вопрос сформулирован. непонятно, что вы хотите. если вам нужна вставка, то:
C++
1
2
3
4
5
6
7
8
9
10
11
// перед вставкой было справедливо следующее:
p1->next == p3;
p1->prev == null;
p3->prev == p1;
p3->next == null;
 
// теперь между p1 и p3 хотим вставить p2:
p1->next = p2;
p3->prev = p2;
p2->prev = p1;
p2->next = p3;
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 14:47  [ТС]     ошибка с указателями #3
у меня выдает ошибку во второй строке: нарушение прав доступа. вопрос:почему?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.04.2012, 14:48     ошибка с указателями #4
приватные поля значит. нужно чтобы они были public
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 14:59  [ТС]     ошибка с указателями #5
если честно, первый раз слышу такое, что мне сделать?
andy_111
90 / 59 / 1
Регистрация: 03.07.2011
Сообщений: 148
30.04.2012, 15:04     ошибка с указателями #6
Найди определение класса (того класса, тип которого имеют указатели pt и pg) и члены prev и next вынеси в секцию public. Они наверняка сейчас находятся в секции private.
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 15:11  [ТС]     ошибка с указателями #7
ну вот, вроде правильно сделал?! а проблему не решило

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct magazin
{public:
    int nomer;
char nazvanie[100];
char fio[100];
int kol;
double dohod;
magazin *prev,*next;
magazin *pr,*pg,*pt;
}
*pg=NULL,*pr=NULL;
magazin *pt=NULL;
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.04.2012, 15:15     ошибка с указателями #8
нарушение прав доступа - это Access violation чтоли?
Так и надо говорить что не при компиляции, а при выполнении глюки.
pg - неинициализированный указатель тогда. указыает хз куда. почему так - вам должно быть виднее. по имеющемуся коду никто вам ничего не скажет.
andy_111
90 / 59 / 1
Регистрация: 03.07.2011
Сообщений: 148
30.04.2012, 15:23     ошибка с указателями #9
Да, public тут не при чем. Вы объявляете указатели, а память под них не выделяете.
Вот так например будет правильно
C++
1
magazin *pt=new magazin;
Добавлено через 1 минуту
А public в структуре и не нужен - там по умолчанию все открыто.
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 15:26  [ТС]     ошибка с указателями #10
вот моя структура и функция, помогите, я в отчаянии(

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
struct magazin
{public:
    int nomer;
char nazvanie[100];
char fio[100];
int kol;
double dohod;
magazin *prev,*next;
magazin *pr,*pg,*pt;
}
*pg=NULL,*pr=NULL;
magazin *pt=NULL;
 
void add1(void)
{   pt=new magazin;
    int d;
    
    
    while (true){
    if (pg->next==NULL) break;
    pg=pg->next;
    }
    
 
cout<<"введите номер"<<endl;
cin>>d;
pt->nomer=d;
cout<<"введите доход"<<endl;
cin>>d;
pt->dohod=d;
cout<<"введите название"<<endl;
cin.ignore();
scanf("%s",&pt->nazvanie);
cout<<"введите фио директора"<<endl;
scanf("%s",&pt->fio);
cout<<"введите количество сотрудников"<<endl;
cin>>d;
pt->kol=d;
pt->prev=pg;
pg->next=pt;
pg=pt;
pg->next=NULL;
while(true){if(pg->prev==NULL)break;
pg=pg->prev;}
}
void add(void)
{   while(true)
{int d,b;
char c[20];
cout<<"1-ввод данных,0-выход"<<endl;
cin>>b;
if(b==0)return;
pt=new magazin;
cout<<"введите номер"<<endl;
cin>>d;
pt->nomer=d;
cout<<"введите доход"<<endl;
cin>>d;
pt->dohod=d;
cout<<"введите название"<<endl;
cin.ignore();
scanf("%s",&pt->nazvanie);
cout<<"введите фио директора"<<endl;
scanf("%s",&pt->fio);
cout<<"введите количество сотрудников"<<endl;
cin>>d;
pt->kol=d;
pt->prev=pg;
pg->next=pt;
pg=pt;
}
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
30.04.2012, 15:28     ошибка с указателями #11
Цитата Сообщение от andy_111 Посмотреть сообщение
magazin *pt=new magazin;
не совсем, так как ещё неизвестно будут ли добавляться элементы или нет, поэтому надо эту строку поместить в функцию добавления следующей структуры(т е создание структуры - магазин)
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 15:31  [ТС]     ошибка с указателями #12
в функции add ошибка
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
30.04.2012, 15:37     ошибка с указателями #13
артем271293,
cin>>d;
pt->dohod=d;
это эквивалентно
cin >> pt->dohod;
артем271293
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 20
30.04.2012, 15:42  [ТС]     ошибка с указателями #14
и это как то решит мою проблему?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 15:48     ошибка с указателями
Еще ссылки по теме:

Ошибка с пустыми указателями C++
C++ Ошибка с указателями
ошибка с указателями C++

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

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
30.04.2012, 15:48     ошибка с указателями #15
функция добавления в конец
C++
1
2
3
4
5
6
7
8
9
10
11
12
void addnext(void)
{
*pt=new magazin
//ваше заполнения структуры...
//.....
magazin *temp=this;
while((temp=temp->next))
//нашли последний элемент
temp->next=pt;
pt->prev=temp->this
pt->next=0;
}
Yandex
Объявления
30.04.2012, 15:48     ошибка с указателями
Ответ Создать тему
Опции темы

Текущее время: 14:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru