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

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

Войти
Регистрация
Восстановить пароль
 
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
#1

не работает шаблонный список - C++

12.10.2009, 22:55. Просмотров 437. Ответов 1
Метки нет (Все метки)

Создаю список

При компиляции выдает ошибки
1>Linking...
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Spisok<int>::~Spisok<int>(void)" (??1?$Spisok@H@@QAE@XZ) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Spisok<int>::Spisok<int>(void)" (??0?$Spisok@H@@QAE@XZ) referenced in function _main
1> fatal error LNK1120: 2 unresolved externals
Срочно нужен help
//SpisokNode.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef _SPISOKNODE_H
#define _SPISOKNODE_H
template <class NODETYPE>
class SpisokNode
{
    
public:
    SpisokNode();
    SpisokNode(const NODETYPE &);
    NODETYPE GetNodeData() const {return conteyner;}    
private:
    SpisokNode *Next;
    NODETYPE conteyner;
};
#endif _SPISOKNODE_H
//SpisokNode.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<iostream>
using namespace std;
#include<stdlib.h>
#include "SpisokNode.h"
#include <string.h>
template<class NODETYPE>
SpisokNode<NODETYPE>::SpisokNode(const NODETYPE & data)
{
  conteyner=data;
  Next=NULL;
}
template<class NODETYPE>
SpisokNode<NODETYPE>::SpisokNode()
{
    Next=NULL;
}
//Spisock.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
#ifndef _SPISOCK_H
#define _SPISOCK_H
#include "SpisokNode.h"
template <class NODETYPE>
class Spisok
{
     friend class SpisokNode<NODETYPE>;
public:
    Spisok();
    ~Spisok();
    void WriteFromFront(NODETYPE &);
    bool ReadFromPosition(int);
    bool DeleteFromPosition(int);
    int IsEmpty() const; 
    void WriteFromEnd(const NODETYPE &);
    void print() const;
    
private:
    SpisokNode<NODETYPE> *Head;
    SpisokNode<NODETYPE> *End;
    SpisokNode<NODETYPE>* GetNewPtr(const NODETYPE &);
    
};
 
#endif _SPISOCK_H
//Spisock.cpp
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
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
#include<stdlib.h>
#include "Spisock.h"
#include <assert.h>
#include <string.h>
#include<windows.h>
 
template<class NODETYPE>
Spisok <NODETYPE>::Spisok()
{
    Head=NULL;
    End=NULL;
            
}
template< class NODETYPE>
SpisokNode<NODETYPE>* Spisok<NODETYPE>::GetNewPtr(const NODETYPE &Ptr)
{
    SpisokNode<NODETYPE> *Ptr=new SpisokNode<NODETYPE>(Ptr);
    assert(Ptr!=0);
    return Ptr;
}
template< class NODETYPE>
void Spisok<NODETYPE>::WriteFromFront( NODETYPE  & data)
{
    SpisokNode<NODETYPE> *NewPtr=GetNewPtr(data);
    if(IsEmpty())
    {
        Head=End=NewPtr;
    }
    else 
    {
        NewPtr->Next=Head;
        Head=NewPtr;
    }
}
template<class NODETYPE>
Spisok<NODETYPE>::~Spisok()
{
     if(!IsEmpty())
     {
         cout<<"Удаление узлов"<<endl;
        SpisokNode<NODETYPE> *curptr=Head,*tempPtr;
        while(curptr)
        {
            tempPtr=curptr;
            curptr=curptr->Next;
            delete tempPtr;
        }
     }
}
 
template<class NODETYPE>
void Spisok<NODETYPE>::WriteFromEnd(const NODETYPE & data)
{
    SpisokNode<NODETYPE> *NewPtr=GetNewPtr(data);
    if(!IsEmpty())  Head=End=NewPtr;
    else 
    {
         End->Next=NewPtr;
         End=NewPtr;
    }
 
    
}
template<class NODETYPE>
bool Spisok<NODETYPE>::DeleteFromPosition(int pos)
{
    int temp=0,temp1=0;
    SpisokNode<NODETYPE> *NewPtr=Head;
    SpisokNode<NODETYPE> *TempPtr=Head;
    SpisokNode<NODETYPE> *TempPtr1=Head;
    SpisokNode<NODETYPE> *TempPtr2=Head;
    if(IsEmpty()) return false;
    else
    {
        while(NewPtr) {temp++;NewPtr=NewPtr->Next;}
        if(temp<pos) {cout<<"Удаление невозможно"<<endl;return false;}
        while(temp1!=pos)  {TempPtr=TempPtr->Next;temp1++;}
        if(pos==0) {Head=TempPtr->Next;delete TempPtr;TempPtr=Head;return true;}
        if(TempPtr==End) 
        {
            while(TempPtr1->Next!=End) TempPtr1=TempPtr1->Next;
            TempPtr1=End;
            delete TempPtr;
            return true;
        }
        while(TempPtr2->Next!=TempPtr) TempPtr2=TempPtr2->Next;
            TempPtr2->Next=TempPtr->Next;
            delete TempPtr;
            return true;
         
    }
}
template<class NODETYPE>
bool Spisok<NODETYPE>::ReadFromPosition(int pos)
{
    int temp=0,temp1=0;
    SpisokNode<NODETYPE> *NewPtr=Head;
    SpisokNode<NODETYPE> *TempPtr=Head;
    if(IsEmpty()) return false;
    while(NewPtr) {temp++;NewPtr=NewPtr->Next;}
    if(pos>temp) return false;
}
template<class NODETYPE>
int Spisok<NODETYPE>::IsEmpty() const
{
    if(Head=NULL)
        return 0;
    else return 1;
}
 
template<class NODETYPE>
void Spisok<NODETYPE>::print() const
{
    SpisokNode<NODETYPE> *TempPtr=Head;
    while(!TempPtr)
    {
        cout<<"1  "<<TempPtr->conteyner<<endl;
    }
}
//main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
#include<stdlib.h>
#include "Spisock.h"
#include "SpisokNode.h"
#include <assert.h>
#include <string.h>
#include<windows.h>
 
int main()
{
    Spisok<int> New;        
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2009, 22:55     не работает шаблонный список
Посмотрите здесь:

Шаблонный класс Список - C++
Доброго времени суток, подскажите пожалуйста как правильно использовать шаблон в данном случае. Нужно использовать произвольный тип данных...

Ошибка C2784. Шаблонный список - C++
имеется шаблонный список #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; template &lt;typename TYPE&gt; class list ...

Шаблонный односвязный список с закрытым наследованием - C++
Доброго времени суток!!! Подскажите, пожалуйста, почему программа заканчивается &quot;Segmentation fault; core dumped;&quot;, что не так с...

Шаблонный Список. не могу получить доступ к protected членам - C++
Здравствуйте! Я пытаюсь сделать шаблонный список, все вроде бы пашет. но есть 2 проблемы. 1. Все работает но только если члены...

Шаблонный класс, не работает с френд функцией - C++
Переделал программу под шаблонный класс, все методы работают справно когда задаешь тип. Да вот только проблема с френд функцией. Светит...

Ошибка ! Не работает список - C++
Помогите пожалуйста ! Почему то не работает список #include &lt;iostream.h&gt; struct List { int value; List *next; ...

Не работает поиск односвязный список - C++
Здравствуйте! В чем мой косяк. Не работает поиск по стране Остальное все работает

Не работает добавление элемента в список - C++
#include &lt;iostream&gt; using namespace std; class mas { public: int data; mas* next; mas* prev; }; class List

Список с приоритетом, не работает программа - C++
Помогите пожалуйста отладить программу. Данные в список записываются, но не удаляются и не выводятся. В чем ошибка? // QwP.cpp:...

Связный список, почему не работает поиск - C++
#include &lt;iostream&gt; using namespace std; class Node{ public: int data; Node * next; Node(int x){ ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
12.10.2009, 23:01     не работает шаблонный список #2
тело шаблонного класса помести в хедер
Ответ Создать тему
Опции темы

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