0 / 1 / 2
Регистрация: 25.07.2015
Сообщений: 18
1

Реализация списка

04.01.2016, 21:33. Показов 2694. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, пробую реализовать двусвязный шаблонный список, или если попытаться создать список и воспользоваться методом класса возникают ошибки в стиле " undefined reference to `List<int>::~List()'" "ошибка: undefined reference to `List<int>::add(int)'" Возможно я не до конца понимаю, как реализовывать методы шаблонного класса в отдельном файле. Снизу код заголовочного файла list.h и исходного list.cpp
C++ (Qt)
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
#ifndef LIST
#define LIST
 
#include <iostream>
 
template<class A>
struct Node
{
    A x;
 
    Node *prev,*next;
};
 
template <class B>
class List
{
    Node<B> *Head,*Last;
public:
    List():Head(NULL),Last(NULL){}
    ~List();
    void add(B a);
    void show();
 
};
 
#endif // LIST
C++ (Qt)
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
#include "list.h"
 
template<class B>
List<B>::~List()
{
    while(Head){
    Last = Head->next;
    delete Head;
    Head = Last;
    }
}
 
template<class B>
void List<B>::add(B a)
{
        Node<B> *temp = new Node<B>;
        temp->x = a;
 
        if(Head)
        {
          Last->next = temp;
          temp->prev = Last;
          temp->next = NULL;
          Last = temp;
        }
        else
        {
            Head = Last = temp;
 
            temp->prev = NULL;
            temp->next = NULL;
        }
}
 
template<class B>
void  List<B>::show()
{
    Node<B> *temp = Head;
 
    while(temp)
    {
        std::cout<<temp->x<<" ";
        temp = temp->next;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2016, 21:33
Ответы с готовыми решениями:

Реализация односвязного списка
Добрый день.Уже как 2 недели разбираюсь с односвязным списком.Почти доделал до нужного состояния...

Реализация однонаправленного списка
не знаю в чём проблема нужно было: Разработать класс для работы с динамической структурой...

Реализация односвязного списка
Здравствуйте, проверьте код, пожалуйста, задание по односвязным спискам. Создать односвязный...

Реализация списка в классе. C++
Нужно описать класс для однонаправленного списка, который будет хранить целые значения. Необходимо...

1
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
04.01.2016, 21:49 2
Лучший ответ Сообщение было отмечено EdWooD как решение

Решение

Цитата Сообщение от EdWooD Посмотреть сообщение
Возможно я не до конца понимаю, как реализовывать методы шаблонного класса в отдельном файле.
В общем-то это невозможно, все реализации шаблонных функций должны быть в заголовочных файлах и доступны в месте инстанцирования шаблона( читайте в месте определения List<int>).

Хотя если вы прочитаете ещё раз верхнее предложение, то вы сможете написать в List.cpp :
C++
1
template class List<int>;
Тем самым воспользовавшись явным инстанцированием шаблона. И для int'a ваш лист будет работать.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2016, 21:49
Помогаю со студенческими работами здесь

Реализация связного списка
Помогите решить задачу Нужно написать программу без использования библиотеки list я вот...

Реализация двусвязного списка
Нужно реализовать двусвязный список(с комментариями для чайника ) Добавлено через 13 минут...

Реализация односвязного списка c++
Пытаюсь разобраться в том как работают списки , но ничего не компилируется , помогите найти ошибку...

Реализация Двунаправленного списка
Ребят, что он хочет от меня, ошибка компиляции, понять не могу в чем проблема, у меня еще просто...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru