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

Перегрузка << в шаблоне класса List - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заданы символьные файлы f и g http://www.cyberforum.ru/cpp-beginners/thread985163.html
Заданы символьные файлы f и g. Определить, совпадают компоненты файла f с компонентами файла g. Если нет, то получить номер первого компонента, в котором f и g отличаются. В случае, когда один из файлов имеет n компонентов (n> 0) и повторяет начало другого (более длинного) файла, ответом должно быть число n +1. Помогите пожалуйста, я не знаю как сделать.
C++ Сделать цикл где начальное, конечное значение и шаг вводятся с клавиатуры Условие(смотри вложение) Необходимо составить цикл с постусловием где начальное и конечное значение, а так же шаг вводятся с клавиатуры вот код: #include <stdio.h> #include <conio.h> #include <math.h> int main() { float a,e,a1,a2,a3,x,z,r; printf("Enter E:\n"); http://www.cyberforum.ru/cpp-beginners/thread985157.html
C++/CLI WinForms Программа с формами. Не работает реверс
Условие: Создать программу с формами. Вводим строку символов, программа считает длину строки и реверсирует строку. Проблема у меня с реверсом. Программа длину строки считает, а не реверсирует. Помогите пожалуйста найти и исправить ошибку. Вот код: #pragma once #include <string.h> namespace form0 {
работа символьными файлами, незнаю как сделать C++
Задані символьні файли f i g. Визначити, чи збігаються компоненти файлу f з компонентами файлу g. Якщо ні, то одержати номер першого компонента, у якому f i g відрізняються між собою. У випадку, коли один з файлів має n компонентів (n>0) і повторює початок іншого (більш довгого) файлу, відповіддю повинне бути число n+1. Допоможіть будьласка, я незнаю як зробити.
C++ Массив: Найти наименьший элемент матрицы X и записать нули в ту строку и столбец, где он находится. http://www.cyberforum.ru/cpp-beginners/thread985145.html
Есть задача: Найти наименьший элемент матрицы X (mxn) и записать нули в ту строку и столбец, где он находится. Нужно написать коды программы : 1. с использованием указателей 2. без использования указателей Есть код данной программы, но не могу понять с указателем она или нет #include <iostream> #include <math.h>
C++ Сортировка слов Привет. Объясните пожалуйста код, немогу с ним разобраться(знаю что программа принимает строку выводит ее на экран и считает сумму наврное) #include<stdio.h> #include<string.h> void main() { char s,d; int i=0,j=0,bw,ew,len; gets(s); len=strlen(s); while (i<len) { подробнее

Показать сообщение отдельно
gizmos
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
22.10.2013, 23:12     Перегрузка << в шаблоне класса List
Сап. Написал класс, реализующий работу односвязного списка. Для вывода решил использовать перегрузку << , но тут и начались проблемы (код программы и описание ошибки ниже (компилирую в Dev-C++)).
Хедер:
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
//хедер с объявлением класса "список" и структуры "узел списка"
#ifndef LIST_H
#define LIST_H
 
#include <iostream>
 
template <class v_type>
class List { 
    template <class u_type>
    friend std::ostream &operator<< (std::ostream &, const List<u_type> &); 
    
    public:
        List()  {head = 0; size = 0;}
        List(v_type);
        ~List();
        void Insert(v_type); 
        bool Destroy(v_type);
        int GetSize() const;
        v_type &operator[](int);
    private:
        struct Node {
            v_type data;
            Node *next;
        };
        int size;
        Node *head;
};
 
#endif
Соурс файл:
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
134
135
136
137
138
139
#include "list.h"
#include <assert.h>
#include <iostream>
 
using namespace std;
 
template <class v_type>
List<v_type>::List(v_type value)
{
    head = new Node;
    assert(head != 0);
    head->data = value;
    head->next = 0;
    size = 1;
}
 
template <class v_type>
List<v_type>::~List()
{
    Node *curr = head, *prev = 0, *temp = 0, *temp1 = 0;
    while (curr->next != 0)
    {
        prev = curr;
        curr = curr->next;
    }
    if (size > 1)
    {
        for (int i = 1; i <= size-1; i++)
        {
            temp = curr;
            prev->next = curr->next;
            delete temp;
            curr = head;
            prev = 0;
            while (curr->next != 0)
            {
                prev = curr;
                curr = curr->next;
            }
        }
        temp1 = head;
        head = head->next;
        delete temp1;
        size = 0;
    }
    else
        if (size = 1)
        {
            temp1 = head;
            head = head->next;
            delete temp1;
        }
}
 
template <class v_type>
void List<v_type>::Insert(v_type value)
{
    Node *elem, *prev = 0, *curr = head;
    elem = new Node;
    if (elem != 0)
    {
        elem->data = value;
        elem->next = 0;
        while (curr != 0 && value < curr->data)
        {
            prev = curr;
            curr = curr->next;
        }
        if (prev == 0)
        {
            elem->next = head;
            head = elem;
            ++size; 
        }
        else
        {
            prev->next = elem;
            elem->next = curr; 
            ++size; 
        }
    }
    else
        cout << value << " not inserted. No memory available. \n";
}
 
template <class v_type>
bool List<v_type>::Destroy(v_type value)
{
    Node *curr, *prev, *temp;
    if (value == head->data)
    {
        temp = head;
        head = head->next;
        delete temp; 
        --size;
        return true;
    }
    else
    {
        prev = head;
        curr = head->next;
        while (curr != 0 && curr->data != value)
        {
            prev = curr;
            curr = curr->next;
        }
        if (curr != 0)
        {
            temp = curr;
            prev->next = curr->next;
            delete temp;
            --size; 
            return true;
        }
        else
            return false;
    }
}
 
template <class v_type>
ostream &operator<<(ostream &out, const List<v_type> &ls)
{
    for (List<v_type>::Node *node = ls.head; node != 0; node = node->next)  //здесь ошибка
        out << node->data << " ";
    out << endl;
    return out;
}
 
template <class v_type>
v_type &List<v_type>::operator[](int elemNum)
{
    Node *curr = head;
    for (int i = 0; i < elemNum; i++)
        curr = curr->next;
    return curr->data;
}
 
template <class v_type>
int List<v_type>::GetSize() const   {return size;}
выдает ошибку:
123 27 D:\ó÷åáà\C\C++\List\list.cpp [Error] 'node' was not declared in this scope
Второй день уже мучаюсь. Всем заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru