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

Шаблон класса с++

15.01.2014, 19:27. Показов 665. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
StakNode.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
#ifndef _STACKNODE_H_
#define _STACKNODE_H_
#include <string>
 
template<class T>
class Stack
{
public:
    Stack():tail(0), head(0)
    {
    }
    
    ~Stack()
    {
        delete tail;
        delete head;
    }
 
    void push(int val)
    {
        Node* Temp;
        Temp=new Node;
        Temp->elem=val;
        if(tail==0)
        {
            tail=Temp;
        }
        else
        {
            Temp->next=tail;
            tail=Temp;
        }
    }
 
    char top()
    {
        if(tail==0)
            std::string("Стек пуст!");
        else
 
        return tail->elem;
    }
 
    void pop()
    {
        if(tail==0)
            std::string("Стек пуст!");
 
        Node* delptr=tail;
        tail=tail->next;
        delete delptr;
    }
 
    void print()
    {
        if(tail==0)
            std::string("Стек пуст!");
        else
 
        for(Node* ptr=tail; ptr!=0; ptr=ptr->next)
        {
            std::cout<<ptr->elem<<' ';
        }
        std::cout<<'\n';
    }
private:
    struct Node
    {
        Node():elem(0), next(0)
        {
        }
        Node* next;
        char elem;
    };
    Node* head;
    Node* tail;
};
 
#endif
Stack.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
#include <iostream>
#include <locale.h>
#include "StackNode.h"
 
 
int main()
{
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    Stack<char> St;
    St.push('1');
    St.push('2');
    St.push('4');
    St.push('3');
    {
        St.print();
        std::cout<<St.top()<<'\n';
        St.pop();
        St.print();
        std::cout<<St.top()<<'\n';
        St.pop();
        St.print();
        std::cout<<St.top()<<'\n';
        St.pop();
        St.print();
        std::cout<<St.top()<<'\n';
        St.pop();
        St.print();
    }
    system ("pause");
    return 0;
}
Нужно избавиться от шаблона класса. В функциях и переменных я это уже сделал. Как убрать до конца?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2014, 19:27
Ответы с готовыми решениями:

Шаблон родительского класса и шаблон класса потомка
Запутался, как правильно пронаследоваться от шаблона класса? #include &lt;iostream&gt; #include...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены функции (работают)...

Шаблон класса, параметром которого должны являться наследники определённого класса
Сразу извиняюсь за нубский вопрос. Суть в том, что я хочу сделать шаблон класса, параметром...

Написать шаблон класса на основе класса vector для реализации стековой структуры данных
Пыталась написать код, но не уверена будет ли такая реализация корректной, можно ли это сделать...

7
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
15.01.2014, 20:02 2
feniks, Убирайте
C++
1
template<class T>
и везде где встречается Т меняйте на нужный вам тип данных
0
0 / 0 / 1
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 20:07  [ТС] 3
Везде где было Т на нужный тип я уже поменял, а
C++
1
template<class T>
просто так не уберешь, ибо 36 ошибок, потому и спрашиваю, что еще необходимо сделать.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
15.01.2014, 20:12 4
C++
1
2
        if(tail==0)
            std::string("Стек пуст!");
круть
C++
1
2
3
4
5
    ~Stack()
    {
        delete tail;
        delete head;
    }
а другие элементы удалять не нужно?
0
0 / 0 / 1
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 20:12  [ТС] 5
cooller_94, В основном:

error C2065: 'St' : undeclared identifier
error C2228: left of '.pop' must have class/struct/union
1> type is ''unknown-type''
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
15.01.2014, 20:13 6
Цитата Сообщение от feniks Посмотреть сообщение
error C2065: 'St' : undeclared identifier
C++
1
Stack St;//Нет шаблона, нет <char>
1
0 / 0 / 1
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 20:18  [ТС] 7
Croessmah, если Вы еще подскажите какие, будет вообще замечательно... )))

Добавлено через 4 минуты
Croessmah, а вывод текста "Стек пуст", это остатки от проги с шаблоном, пока не менял))
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
15.01.2014, 21:23 8
Цитата Сообщение от feniks Посмотреть сообщение
если Вы еще подскажите какие
Это он про те, которые ты выделял push'ем. Т.е. все, которые между head и tail.

Добавлено через 2 минуты
Цитата Сообщение от feniks Посмотреть сообщение
вывод текста "Стек пуст", это остатки от проги с шаблоном
Там вроде как это совсем бесполезно, особенно в твоем исполнении.) Хоть выведи это сообщение, чтоль.
0
15.01.2014, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2014, 21:23
Помогаю со студенческими работами здесь

Шаблон класса (параметризация класса)
Нужна помощь и советы!!! Англо-русский словарь построен как список. Каждая компонента содержит...

Создать шаблон некоторого класса, возможно, реализованного с применением некоторого серверного класса
Добрый день, Уважаемые профессионалы. Прошу помочь в решении задачи. Честно говоря, я ничего...

Шаблон класса
Здраствуйте! Разрабатываю динамический массив. Необходимо реализовать, а не знаю как..не хватает...

Шаблон класса
Приветствую. Есть задание: 1. Создать шаблон заданного класса. Определить перегруженную операцию...


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

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

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