Форум программистов, компьютерный форум 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. Просмотров 520. Ответов 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
Посмотрите здесь:

error: ISO C++ forbids declaration of 'Time' with no type - C++
#ifndef _TIMELL_H #define _TIMELL_H #include &lt;iostream&gt; #include &lt;string&gt; #include &quot;Time.h&quot; using namespace std; ...

C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]| - C++
class TUID { public: char Data; TUID (); operator ++ (); };

ISO C++ forbids declaration of with no type - C++
Здравстуйте! Недавно начал изучать С++. В коде возникла ошибка: Line 23| ISO C++ forbids declaration of 'roman' with no type. Подскажите,...

ISO C++ forbids declaration of 'c' with no type - C++
Компилятор выдает ошибку при выполнении данного кода, в чем ошибка? #include &lt;iostream&gt; using namespace std; template &lt;typename...

ISO C++ forbids declaration of 'main' with no type - C++
Здравствуйте! Возникла ошибка в коде, никак не могу понять что где неправильно написал. Помогите кто может! Заранее благодарен! Задание...

Ошибка: forbids declaration of 'magic' with no type expected ';' before '.' token - C++
пишет &quot;forbids declaration of 'magic' with no type expected ';' before '.' token&quot; не могу найти где ? #include &lt;iostream&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 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Эксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 00:44     Error: ISO C++ forbids declaration of "Link" with no type
Еще ссылки по теме:

ISO C++ forbids. error - C++
#ifndef CPYRAMID_H #define CPYRAMID_H class cPoint3d { public: cPoint3d() : x_(0.0),y_(0.0),z_(0.0) {}; ...

Ошибка "Declaration syntax error" - C++
Никак не пойму что не так. Пишет Declaration syntax error. Помогите пожалуйста #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" - C++
Помогите, пожалуйста, исправить ошибку в программе. #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;windows.h&quot; #include &lt;conio.h&gt; ...

Ошибка "error C4430: missing type specifier" при работе с fstream - C++
Добрый день. Работаю над сохранением и загрузкой файлов. Для этого использую библиотеку &lt;fstream&gt;, создаю обьект класса fstream. А...

Классы: ка победить ошибку из "const Type" в "Type &" - C++
Создаю свой класс class MyClass {private: int *dat; WCHAR *buf; inline size_t GetLength(){return dat? dat: 0;}; public: ...

При компиляции кода вылазит ошибка "error C2027: use of undefined type 'SldWorks'" - C++
При компиляции кода вылазит ошибка &quot;error C2027: use of undefined type 'SldWorks'&quot;. Я писал на чистых плюсах! #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
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