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

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

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

Ошибка при компиляции - C++

16.01.2012, 00:05. Просмотров 1082. Ответов 21
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class Data> List <Data>::~List()
{
    if (pbeg !=0)
    {
        Node *pv = pbeg;
        while (pv)
        {
            pv=pv->next;
            delete pbeg;
            pbeg=pv;
        }
    }
}
это деструктор, ругается на строчку pv=pv->next;
pv=pv->next; это проход по односвязному списку до конца

сама ошибка:
instantiated from `List<Data>::~List() [with Data = Matr]'
instantiated from here
C++
1
List <Matr> L;
default argument for parameter of type `Matr' has type `int'

Сам конструктор:
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
template <class Data> class List
{
    class Node
    {
        public:
            Data d;
            Node *next, *prev;
            Node(Data dat = 0){d = dat; next = 0; prev = 0;}
    };
    Node *pbeg, *pend;
    public:
        List();
        ~List();
        void add(Data d);
        Node * find(Data i) {
                     Node *pv = pbeg;
                     while (pv)
                      {
                         if(pv->d == i)break;
                         pv = pv->next;
                      }
                      return pv;
        }
        Node * insert(Data key, Data d)
        {
            Node *pkey = find(key);
            if(!pkey)
            {
               Node *pv=new Node(d);
                pv->next=pkey->next;
                pv->prev=pkey;
                pkey->next=pv;
                if (pkey!= pend)(pv->next)->prev = pv; else pend=pv;
                 return pv;
              }
             return 0;
        };
        bool remove(Data key);
        void print();
        void print_back();
};
 Комментарий модератора 
Слова "помогите","плз", "горю","отчислят","срочно" в названии темы только отбивают желание ее смотреть. Кратко опишите суть проблемы,а не причины ее возникновения.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 00:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при компиляции (C++):

Ошибка при компиляции. Где ошибка? (Работа с классом) - C++
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined reference to `MeterNZiF::MeterNZiF()' &quot; на 7 строку приложения. ...

Ошибка памяти при выполнении, при компиляции не выводит ошибки - C++
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой строке и выводит их в обратном порядке....

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы - C++
В VS скомпилировал код #include &lt;iostream&gt; using namespace std; int main() { int a; cout&lt;&lt;&quot;Hallo&quot;; cin&gt;&gt;a; cout&lt;&lt;a; ...

Использование шаблонов при наследовании, ошибка при компиляции - C++
При изучении списков написал шаблон протестировал, все работает. После написал класс наследник от шаблона List.h, компилятор выдает...

При компиляции ошибка. Ошибка c++ C2678 - C++
Ошибка c++ C2678 #include &lt;windows.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include...

Ошибка при компиляции - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;windows.h&gt; using namespace...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
16.01.2012, 02:48 #16
но что именно не работает?
я сколько не запускаю для
C++
1
2
3
4
    L.add(Mm);
    L.add(MM);
    L.print();
    L.print_back();
все выдает верно

Добавлено через 53 секунды
никаких нулей, разве что я сам ввожу в матрицу 0
0
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
16.01.2012, 02:52  [ТС] #17
Пришли мне ее
У меня по прежнему одни нули выводит L.print();
0
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
16.01.2012, 02:56 #18
http://zalil.ru/32506081без файлов проекта, т.к. иде не девс++
1
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
16.01.2012, 02:59  [ТС] #19
ееееее заработало)
Спасибо тебе)
0
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
16.01.2012, 03:00 #20
если какие траблы могу завтра посмотреть(если еще нужно будет) просто разбирать нечитабельный(уж извини)) код в это время суток не ок
0
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
16.01.2012, 10:56  [ТС] #21
да в последний момент все как всегда, потому в таком виде)

Добавлено через 7 часов 38 минут
Еще 1 вопрос, у меня в шаблоне структуры данных используется двусвязный список:


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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#ifndef _Rmatrix
#define _Rmatrix
template <class Data> class List
{
    class Node
    {
        public:
            Data d;
            Node *next, *prev;
            Node(): d(Data()), next(), prev() { }
            Node(const Data& dat): d(dat), next(), prev() { }
 
    };
    Node *pbeg, *pend;
    public:
        List();
        ~List();
        void add(Data d);
        Node * find(Data i) {
                     Node *pv = pbeg;
                     while (pv)
                      {
                         if(pv->d == i)break;
                         pv = pv->next;
                      }
                      return pv;
        }
        Node * insert(Data key, Data d)
        {
            Node *pkey = find(key);
            if(!pkey)
            {
               Node *pv=new Node(d);
                pv->next=pkey->next;
                pv->prev=pkey;
                pkey->next=pv;
                if (pkey!= pend)(pv->next)->prev = pv; else pend=pv;
                 return pv;
              }
             return 0;
        };
        bool remove(Data key);
        void print();
        void print_back();
};
 
using namespace std;
 
//-----------------------------
template <class Data> List <Data>::~List()
{
    if (pbeg !=0)
    {
        Node *pv = pbeg;
        while (pv)
        {
            pv=pv->next;
            delete pbeg;
            pbeg=pv;
        }
    }
}
//------------------------------------
template <class Data> List <Data>::List()
{
    pbeg=0;
    pend=0;
}
//--------------------------------------------------
template <class Data> void List <Data>::print()
{
    Node *pv = pbeg;
    cout<<endl<<"list: ";
    while (pv)
    {
        cout << pv->d << ' ';
        pv = pv->next;
    }
    cout<<endl;
}
//-----------------------------------
template <class Data> void List <Data>::print_back()
{
    Node *pv = pend;
    cout<<endl<<" list back: ";
    while (pv)
    {
        cout<<pv->d<<' ';
        pv=pv->prev;
    }
    cout<<endl;
}
//--------------------------------------
template <class Data> void List <Data>::add(Data d)
{
    Node *pv = new Node(d);
    if (pbeg == 0)pbeg = pend = pv;
    else
    {
        pv->prev = pend;
        pend->next = pv;
        pend = pv;
    }
}
//---------------------------------------
template <class Data> bool List <Data>::remove(Data key)
{
    if(Node *pkey = find(key))
    {
        if (pkey == pbeg)
        {
            pbeg = pbeg->next;
            pbeg->prev = 0;
        }
        else
        if (pkey == pend)
        {
            pend = pend->prev;
            pend->next = 0;
        }
        else
        {
            (pkey->prev)->next = pkey->next;
            (pkey->next)->prev = pkey->prev;
        }
        delete pkey;
        return true;
    }
    return false;
}
//-------------------------------------------------
 
#endif
Как сделать ЦИКЛИЧЕСКИЙ двусвязный список?
0
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
16.01.2012, 12:57 #22
а в чем именно проблема?
просто в таком списке первый и последний элемент указывают друг на друга. схематически список таков, что выполняется:
last->next = first;
first->prev = last;

кстати, вызовы ф-ий find и insert в приведенном выше классе не скомпилятся

Добавлено через 13 минут
и еще, ф-ии, подобные print и print_back, лучше реализовывать вне класса, т.к. им не нужен доступ к закрытому представлению. лучше дополнить интерфейс так, чтобы он предоставлял доступ к данным
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 12:57
Привет! Вот еще темы с ответами:

Ошибка при компиляции - C++
Подскажите пожалуйста из-за чего выходит эта ошибка при компиляции программы Unresolved external 'min(const int *, const int)'...

ошибка при компиляции - C++
//figure.h #ifndef FIGURE_H #define FIGURE_H class figure { public: char type; char x; int y; ...

Ошибка при компиляции - C++
Выдаёт ошибку fatal error C1083: Cannot open precompiled header file: 'Debug\proga.pch': No such file or directory Как исправить её ?...

Ошибка при компиляции - C++
вот код #include &lt;stdio.h&gt; #include &quot;mpi.h&quot; int main(int argc, char* argv) { int ProcNum, ProcRank, RecvRank; MPI_Status...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.01.2012, 12:57
Ответ Создать тему
Опции темы

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