Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 432
#1

Почему выдаёт ошибку о неинициализированной локальной переменой?

23.05.2017, 22:27. Просмотров 111. Ответов 3
Метки нет (Все метки)

Код с шаблоном в связном списке, использующем пользовательский класс. Почему-то выбивает ошибку
использована неинициализированная локальная переменная "em"(стр. 63).
Думал, нужен конструктор в этом классе. Но в книге Лафоре этого конструктора нет, и всё работает.
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
#include<iostream>
using namespace std;
const int mx = 20;
class employ
{
private:
    char name[mx];
    int nmb;
public:
    friend istream& operator>>(istream& s, employ e);
    friend ostream& operator<<(ostream& s, employ e);
};
ostream& operator<<(ostream& s, employ e)
{
    cout << e.nmb;
    cout << e.name;
    return s;
};
istream& operator>>(istream& s, employ e)
{
    cout << "Person number "; cin >> e.nmb; cout << endl;
    cout << "Name "; cin >> e.name;
    return s;
};
 
template <class tip>
struct link
{
    tip pers;
    link*l;
};
template <class tip>
class list
{
private:
    link<tip>*f1;
public:
    list(){ f1 = NULL; }
    void addit(tip d)
    {
        link<tip>*newch = new link<tip>;
        newch->pers = d;
        newch->l = f1;
        f1 = newch;
    }
    void disp()
    {
        link<tip>*curr = f1;
        while (curr)
        {
            cout << curr->pers << endl;
            curr = curr->l;
        }
    }
};
int main()
{
    list<employ> l_emp;
    employ em;
    char ch;
 
    do{
        cin >> em;
        l_emp.addit(em);
        cout << "One more?: y/n"; cin >> ch;
    } while (ch != 'n');
    l_emp.disp();
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2017, 22:27
Ответы с готовыми решениями:

Использование неинициализированной локальной переменной
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace...

Почему выдаёт ошибку?
#include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include...

Почему выдаёт данную ошибку ?
Как её исправить

Проверьте правильность кода. Почему выдаёт ошибку?
Написать программу, которая считывает текст из файла, находит самое длинное...

Почему выдаёт ошибку? Вроде всё правильно!

3
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.05.2017, 22:32 #2
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
istream& operator>>(istream& s, employ e)
istream& operator>>(istream& s, employ &e)
1
Max Dark
шКодер самоучка
1945 / 1738 / 857
Регистрация: 09.10.2013
Сообщений: 3,846
Записей в блоге: 6
Завершенные тесты: 2
23.05.2017, 22:35 #3
Fatmarmelad, у вас в операторы ввода вывода переменные передаются по значению.
Замените на передачу по ссылке:
employ e на const employ& e в строках 11, 13 и на employ& e в 10 и 19
1
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 432
23.05.2017, 22:42  [ТС] #4
Спасибо! Заработал!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2017, 22:42

почему выдаёт эту ошибку declaration terminated incorrectly?

Почему при использовании функции scanf программа выдаёт ошибку?
При использовании команды scanf программа выдаёт ошибку. Printf работает...

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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