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

Шаблонный класс List - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Директивы препроцессора.Ошибка #error не работает. http://www.cyberforum.ru/cpp-beginners/thread386266.html
Ребят программа должна выдавать сообщение об ошибке и прекращать компиляцию.,если,X или Y неопределены Делаю #error,но почему-то подчеркивает красным #include <iostream> #include <stdio.h>...
C++ Ошибка в программе вот код программы: #include <iostream> #include <fstream> #include <string> using namespace std; int main() { cout << "Enter name file" << endl; string name; http://www.cyberforum.ru/cpp-beginners/thread386265.html
Умножение матриц. Проверка Ошибок. C++
Снова здрасте. В общем, я почти закончил свою программу. Так мне кажется. Но, при компиляции создается екзешник, затем по началу программа работает. Ввожу элементы матрицы, но до самих расчетов не...
C++ Что делать если нет функции Tools
А у меня нет функции Tool что делать?????
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread386245.html
Помогите найти ошибку. я как-то неправильно определяю длину строки. И еще пару ошибок непонятных. #include <iostream> #include <conio.h> #include <string> using namespace std; void...
C++ Разобраться в некоректности программы!(англо-русский словарь лин. списком) Здравствуйте,помогите пожалуйста с программой,требуется написать программу для русско-английского словаря,читать слова из текстового файла и хранить с помощью лин. списка. Написал код,компилится,а... подробнее

Показать сообщение отдельно
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
18.11.2011, 13:25  [ТС]
Передалал, но по-прежнему не компилируется. Выдает:
1>c:\users\selver\documents\visual studio 2010\projects\list_one\list_one\list.h(120): error C2955: 'Node' : use of class template requires template argument list
1> c:\users\selver\documents\visual studio 2010\projects\list_one\list_one\node.h(8) : see declaration of 'Node'
1> c:\users\selver\documents\visual studio 2010\projects\list_one\list_one\main.cpp(8) : see reference to class template instantiation 'List<T>' being compiled
1> with
1> [
1> T=int
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
#ifndef NODE_H
#define NODE_H
 
 
 
template <class T>
class Node
{
public:
    Node(T data,Node* next,Node* last)
{
    this->data=data;
    this->next=next;
    this->last=last;
}
    
Node(T data)
{
    this->data=data;
}
 
private:
    Node * next;
    Node * last;
    int key;
    T data;
};
 
#endif NODE_H
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
#ifndef LIST_H
#define LIST_H
#include <iostream>
#include "Node.h"
 
 
template <class T>
class List
{
public:
    friend class Node<T>;
    List():
    head(NULL),
    temp(NULL)
    {}
 
    void AddNodeEnd(T data)
    {
        Node * nd=new Node(data,NULL,temp);
    temp=nd;
    if (head)
    {
        Node* current=head;
        while(current->next)
            current=current->next;
            current->last=nd;
    }
    else head=nd;
    numNode();
    }
 
    void AddBegining(T data)
    {
            Node* nd=new Node(data);
    if(head)
    {
        Node* tmpt=head;
        head=nd;
        nd->next=tmpt;
    }
    else 
    {
        head=nd;
        nd->next=NULL;
    }
    numNode();
    }
 
    void deleteNodeEnd()
    {
            if (temp)
    {
        Node* current=temp;
        current=current->last;
        delete current->next;
        current->next=NULL;
    }
    else
    std::cout<<"list is empty";
    }
 
    void deleteNodeBegin()
    {
            if (head)
    {
        Node* tmpt;
        tmpt=head;
        tmpt=tmpt->next;
        delete head;
        head=tmpt;
    }
    else
    std::cout<<"list is empty";
    }
 
    T find(int key) const
    {
            Node* current;
    current=head;
    while(current)
    {
        if (current->key==k)
            return current->data;
        current=current->next;
    }
    }
 
    void PrintListForward() const
    {
        Node* current=head;
    while(current)
    {
        std::cout<<current->data<<" ";
        current=current->next;
    }
    }
 
    void PrintListBack() const
    {
            Node* current=temp;
    while(current)
    {
        std::cout<<current->key<<" "<<current->data;
        current->last;
    }
    }
 
    void numNode() const
    {
            Node* counter=head;
    int i=0;
    while (counter)
    {
        counter->key=++i;
        counter=counter->next;
    }
    }
 
private:
    Node* head;
    Node* temp;
};
 
 
 
#endif LIST_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include"Node.h"
#include "List.h"
using namespace std;
 
int main()
{
    List<int> n;
    n.AddBegining(12);
    n.AddBegining(45);
    n.AddBegining(10);
    n.AddBegining(70);
    n.AddBegining(0);
    n.AddBegining(55);
    n.PrintListForward();
    return 0;
}
Попробывал писать в List:
Node<T>* head, Node<T>* temp и в функциях заменять Node на Node<T>, ошибок еще больше. Вопрос: так как все таки правильно Node * head, или Node<T>* head?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru