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

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

Восстановить пароль Регистрация
 
feniks
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 19:27     Шаблон класса с++ #1
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;
}
Нужно избавиться от шаблона класса. В функциях и переменных я это уже сделал. Как убрать до конца?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
15.01.2014, 20:02     Шаблон класса с++ #2
feniks, Убирайте
C++
1
template<class T>
и везде где встречается Т меняйте на нужный вам тип данных
feniks
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 20:07  [ТС]     Шаблон класса с++ #3
Везде где было Т на нужный тип я уже поменял, а
C++
1
template<class T>
просто так не уберешь, ибо 36 ошибок, потому и спрашиваю, что еще необходимо сделать.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 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;
    }
а другие элементы удалять не нужно?
feniks
0 / 0 / 0
Регистрация: 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''
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
15.01.2014, 20:13     Шаблон класса с++ #6
Цитата Сообщение от feniks Посмотреть сообщение
error C2065: 'St' : undeclared identifier
C++
1
Stack St;//Нет шаблона, нет <char>
feniks
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 31
15.01.2014, 20:18  [ТС]     Шаблон класса с++ #7
Croessmah, если Вы еще подскажите какие, будет вообще замечательно... )))

Добавлено через 4 минуты
Croessmah, а вывод текста "Стек пуст", это остатки от проги с шаблоном, пока не менял))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2014, 21:23     Шаблон класса с++
Еще ссылки по теме:

C++ Шаблон класса
Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон C++
Шаблон класса, параметром которого должны являться наследники определённого класса C++

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

Или воспользуйтесь поиском по форуму:
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
15.01.2014, 21:23     Шаблон класса с++ #8
Цитата Сообщение от feniks Посмотреть сообщение
если Вы еще подскажите какие
Это он про те, которые ты выделял push'ем. Т.е. все, которые между head и tail.

Добавлено через 2 минуты
Цитата Сообщение от feniks Посмотреть сообщение
вывод текста "Стек пуст", это остатки от проги с шаблоном
Там вроде как это совсем бесполезно, особенно в твоем исполнении.) Хоть выведи это сообщение, чтоль.
Yandex
Объявления
15.01.2014, 21:23     Шаблон класса с++
Ответ Создать тему
Опции темы

Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru