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

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

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

Error: ISO C++ forbids declaration of "Link" with no type - C++

02.12.2012, 03:54. Просмотров 514. Ответов 4
Метки нет (Все метки)

выдает кучу ошибок, три основные:
Код
sorted_list.h:8: error: ISO C++ forbids declaration of ‘Link’ with no type
sorted_list.h:8: error: expected ‘;’ before ‘*’ token

sorted_list.h:34: error: ‘Sorted_List::Link* Sorted_List::Link::next’ is private
sorted_list.cc:48: error: within this context

sorted_list.cc: In member function ‘void Sorted_List:: print()’:
sorted_list.cc:111: error: ‘head’ was not declared in this scope

подскажите в чем проблема, не там декларирую?

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
typedef int key_t;
typedef double value_t;
 
class Sorted_List
{
 
public:
Link* prev;
Link* temp;
Link* cur;
Link* temp2;
Link* head
 
Sorted_List();
~Sorted_List();
void insert(key_t key, value_t value);
void insert_after(key_t key,key_t newKey);
void remove(key_t key, value_t value);
void print();
value_t find(key_t key);
int size();
private:
;
Sorted_List(const Sorted_List &);
Sorted_List& operator=(Sorted_List const&)=delete;
class Link
{
key_t key;
value_t value;
Link* next;
};
Link* first;
};
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
#include <iostream>
#include <iomanip>
#include "sorted_list.h"
 
using namespace std;
Sorted_List::Sorted_List()
{
cout<<"Constructor called"<<endl;
 
this->first=NULL;
}
Sorted_List::~Sorted_List()
{
Link *first=head;
    while (first!=NULL)
    {
    Link *next=first->next;
    delete first;
    first=next;
    }
cout<<"Destructor called"<<endl;
}
 
void Sorted_List::remove(key_t key, value_t value)
{
 
    //if empty list
    Link *first = head;
    if ( first == NULL ) 
    return;
 
     // if last node
    if ( first->next== NULL ) {
    delete first;
    head = NULL;
    }
    else { //first element
    Link *first=head;
    free(head);
    head=head->first;
    }
    //between nodes
    Link *first=head;
    while (first->next!=NULL)
    {
       if (first->next->value==key)
    {
         Link *temp=first->next;
         first->next=temp->next;
         free(temp);
         }
     else
     {
     first=first->next;
}
}
}
value_t Sorted_List::find(key_t key)   
{
link *cur=first;
while(cur!=NULL);
{
   if (cur->key==key)
{
return value;
}
else 
{
cur=cur->next;
}
}
return 0;
 
}
void Sorted_List::insert(key_t key)
{
    
        temp = new Link;
    temp->key = key;
        temp->value = value;
    temp->next = head;
    head = temp;
 
 
}
void Sorted_List::insert_after(key_t key,key_t newKey)
{
    Link* temp = head;
    while (temp!=NULL)
        {
            if(temp->key==key)
            {
              Link *temp2;
              temp2 = new Link;
              temp2->key = newKey;
              temp2->value = value;
     
              temp2->next = temp->next;
              temp->next = temp2;
              return;
            }
            temp=temp->next;
             
        }
}
 
 
void Sorted_List::print()
{
 
    Link *first = head;
        
        while(first)
    {
    cout<<first->value<<endl;
        cout<<first->key<<endl;
    first=first->next;
    }
} 
 
int Sorted_List::size()
{
    int count=0;
    Link *first=head;
    while(first!=0);
    count++;
    first=first->next;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
 
#include "sorted_list.h"
 
using namespace std;
 
int main()
{
  Sorted_List l;
 
 
  l.print();
 
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 03:54     Error: ISO C++ forbids declaration of "Link" with no type
Посмотрите здесь:

C++ Ошибка: forbids declaration of 'magic' with no type expected ';' before '.' token
C++ error: ISO C++ forbids declaration of 'Time' with no type
C++ Классы: ка победить ошибку из "const Type" в "Type &"
C++ LINK : fatal error LNK1104: не удается открыть файл "LIBC.lib"
ISO C++ forbids. error C++
C++ ISO C++ forbids declaration of with no type
C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]| C++
C++ При компиляции кода вылазит ошибка "error C2027: use of undefined type 'SldWorks'"
Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" C++
C++ Ошибка "Declaration syntax error"
C++ ISO C++ forbids declaration of 'c' with no type
C++ Ошибка "error C4430: missing type specifier" при работе с fstream

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
02.12.2012, 05:02     Error: ISO C++ forbids declaration of "Link" with no type #2
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
typedef int key_t;
typedef double value_t;
 
class Sorted_List
{
 
public:
class Link;
Link* prev;
Link* temp;
Link* cur;
Link* temp2;
Link* head;
 
Sorted_List();
~Sorted_List();
void insert(key_t key, value_t value);
void insert_after(key_t key,key_t newKey);
void remove(key_t key, value_t value);
void print();
value_t find(key_t key);
int size();
private:
;
Sorted_List(const Sorted_List &);
Sorted_List& operator=(Sorted_List const&);
class Link
{
key_t key;
value_t value;
Link* next;
};
Link* first;
};
j_runner
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 26
02.12.2012, 05:31  [ТС]     Error: ISO C++ forbids declaration of "Link" with no type #3
теперь жалуется на указатели в private

Добавлено через 9 минут
или у меня в функциях что-то не так?
Croessmah
Модератор
Эксперт CЭксперт С++
12889 / 7275 / 811
Регистрация: 27.09.2012
Сообщений: 17,974
Записей в блоге: 2
Завершенные тесты: 1
02.12.2012, 10:33     Error: ISO C++ forbids declaration of "Link" with no type #4
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
typedef int key_t;
typedef double value_t;
 
class Sorted_List
{ 
public:
class Link{
    public:
    key_t key;
    value_t value;
    Link* next;
    };
    Link* prev;
    Link* temp;
    Link* cur;
    Link* temp2;
    Link* head;
    Link* first;
    Sorted_List();
    ~Sorted_List();
    void insert(key_t key, value_t value);
    void insert_after(key_t key,key_t newKey);
    void remove(key_t key, value_t value);
    void print();
    value_t find(key_t key);
    int size();
private:
    Sorted_List(const Sorted_List &);
    Sorted_List& operator=(Sorted_List const&);
};
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
#include <iostream>
#include <iomanip>
#include "sorted_list.h"
 
using namespace std;
Sorted_List::Sorted_List()
{
cout<<"Constructor called"<<endl;
 this->head=NULL;//ОБНУЛЯТЬ ГОЛОВУ ТОЖЕ НАДО.
this->first=NULL;
}
Sorted_List::~Sorted_List()
{
Link *first=(Link*)this->head;
 
    while (first!=NULL)
    {
    Link *next=first->next;
    delete first;
    first=next;
    }
cout<<"Destructor called"<<endl;
}
 
void Sorted_List::remove(key_t key, value_t value)
{
    //if empty list
    first = this->head;
    if ( first == NULL ) 
    return;
 
     // if last node
    if ( first->next== NULL ) {
    delete first;
    head = NULL;
    }
    else { //first element
    first=head;
     head=head->next;//ИЗМЕНИЛ ТУТ ПОРЯДОК УДАЛЕНИЯ/ПРИСВОЕНИЯ
    free(head);
    
    }
    //between nodes
    first=head;
    while (first->next!=NULL)
    {
       if (first->next->value==key)
    {
         temp=first->next;
         first->next=temp->next;
         free(temp);
         }
     else
     {
     first=first->next;
}
}
}
value_t Sorted_List::find(key_t key)   
{
cur=first;
while(cur!=NULL);
{
   if (cur->key==key)
{
return cur->value;
}
else 
{
cur=cur->next;
}
}
return 0;
 
}
void Sorted_List::insert(key_t key,value_t value)
{
    
        temp = new Link;
    temp->key = key;
        temp->value = value;
    temp->next = head;
    head = temp;
 
 
}
void Sorted_List::insert_after(key_t key,key_t newKey)
{
    Link* temp = head;
    while (temp!=NULL)
        {
            if(temp->key==key)
            {
              Link *temp2;
              temp2 = new Link;
              temp2->key = newKey;
              temp2->value = 0;//= value; ТУТ НЕТ ПЕРЕМЕННОЙ value
     
              temp2->next = temp->next;
              temp->next = temp2;
              return;
            }
            temp=temp->next;
             
        }
}
 
 
void Sorted_List::print()
{
 
    first = head;
        
        while(first)
    {
    cout<<first->value<<endl;
        cout<<first->key<<endl;
    first=first->next;
    }
} 
 
int Sorted_List::size()
{
    int count=0;
    first=head;
    while(first!=0){//ТУТ БЫЛ БЕСКОНЕЧНЫЙ ЦИКЛ
        count++;
        first=first->next;
     }
     return count;
}
j_runner
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 26
05.12.2012, 00:44  [ТС]     Error: ISO C++ forbids declaration of "Link" with no type #5
в данном случае внутренний класс никак нельзя сделать приватным и некоторые его переменные? можете еще проверить главную программу, правильно ли я vizivaju функции, не могу запустить почему то ругается на
test.cc:2: fatal error: sorted_list.h: No such file or directory
compilation terminated.
файл включен и в той же папке
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
#include<iostream>
#include <sorted_list.h>
using namespace std;
int main()
{
Sorted_List a; //konstruktor vizivaemij na a !
Sorted_List* b; // NeSorted_List, prosto adres
b = new Sorted_List(); // konstruktor vizivaemij na *b !
 
 
a.insert(1, 3.14);
b->insert(2, 2.72);
 
a.insert_after(3, 5.67);
b->insert_after(4,5.3);
 
a.find(2);
b->find(2);
 
a.remove(1,3.14);
b->remove(2,2.72);
 
a.print();
 
a.size();
 
delete b;
 
}
Добавлено через 15 часов 11 минут
большинство проблем решено
не работают закомментированные..
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
#include<iostream>
#include "sorted_list.h"
using namespace std;
int main()
{
//Constructor called on a !
Sorted_List* b; // Not a Sorted_List, just an address
Sorted_List a;
b = new Sorted_List(); // Constructor called on *b !
// * is intentional, the constructor work on what
// b points to, not on b, b is not a Sorted_List
// Call the insert member function on list a and b
 
a.insert(1, 3.14);
 
b->insert(2, 2.72);
 
 
a.insert_after(1, 5.67);
b->insert_after(1,5.3);
 
a.print();
b->print();
/*
a.find(2);
b->find(2);*/
 
//a.remove(1,3.14);
//b->remove(2,2.72);
 
 
//cout<<"size"<<endl;
//a.size();
// The above is C++ syntax for list_insert(&a, 1, 3.14);
//delete b; // Destructor called on *b !
delete b;
// ... a lot of other code
} // Destructor called on a (not on “just an address” b)!
Добавлено через 9 часов 41 минуту
осталась одна проблема
как правильно вызвать данную функцию?

value_t find(key_t key);

cout<<a.find(1)<<endl;? (segmentation fault)

Добавлено через 20 часов 39 минут
со всем разобрался , все работает
Yandex
Объявления
05.12.2012, 00:44     Error: ISO C++ forbids declaration of "Link" with no type
Ответ Создать тему
Опции темы

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