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

Шаблоны класса и специализация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Игра кости http://www.cyberforum.ru/cpp-beginners/thread256173.html
Всем привет! Помогите пожалуйста перевести исходник программы с дельфи на с++ я не могу разобраться сама. Программа небольшая две-три процедурки.
C++ вопрос про скобки Здравствуйте, получил задание написать программу, смысл которой заключается в умножении матрицы на столбец. Матрица статическая, функция умножения пишется собственная. Программу написал,... http://www.cyberforum.ru/cpp-beginners/thread256169.html
C++ Long Double
Разве нет типа более емкого, чем Double в Visual studio? Long Double, как я понял, определяется как обычный Double. А мне нужен аналог по емкости Extended в Delphi.
C++ В массиве перевернуть каждую группу из N элементов
Задан массив A(M), число элементов которого кратно N. Переверните каждую группу из N элементов модифицируйте массив A. Тест. 1; 2; 3; 4; 9; 7; 0; 2; 5; 6; 7; 8. N = 4 Результат. 4; 3; 2; 1; 2; 0;...
C++ Ошибка "vold" does not name a type http://www.cyberforum.ru/cpp-beginners/thread256124.html
#include <iostream> #include <fstream> using namespace std; void pover(); //обьявление функции int main(int argc, char *argv) { double n, nn;
C++ Кодировка, ASСII #include <iostream> using namespace std; #include <iomanip> #define LINEL 20 #define LINEB 40 #define OTSTUP 5 ostream& lineL(ostream& p) подробнее

Показать сообщение отдельно
РагнаР
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 27

Шаблоны класса и специализация - C++

13.03.2011, 02:00. Просмотров 849. Ответов 0
Метки (Все метки)

Нужно реализовать класс двусторонняя очередь- дек на шаблонах работающий для целых типов и для строк типа char*(без стл).
Возникает проблема при специализации метода.
Вот собственно и сам класс:
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
#include<iostream>
template<class TInfo>
class TDeque
{
protected:
    struct TDequeItem
    {
        TInfo Info;
        TDequeItem* Next;
        TDequeItem* Prev;
    };
    TDequeItem *Front,*Rear;
    int Size;
    void Erase();
    void Clone(const TDeque &);
    void DeleteItem(TDequeItem*);
    void* PtrByIndex(int)const;
public:
 
    class error{};
    TDeque()
    {
        Front=NULL;Rear=NULL;Size=0;
    }
    TDeque (const TDeque &);
    virtual ~TDeque();
    void InsFront(TInfo);
    void InsRear(TInfo);
    bool DelFront(TInfo &);
    bool DelRear(TInfo &);
    const TDeque& operator = (const TDeque &);
    const TInfo& GetByIndex(unsigned)const;
    void SetByIndex(TInfo,unsigned);
    void Browse(void(TInfo&));
    void Browse(void(TInfo))const;
    void Print()const;
};
template<typename TInfo>void TDeque<TInfo>::DeleteItem(TDequeItem *A)
{
    delete A;
    Size--;
}
template<>void TDeque<char*>::DeleteItem(TDequeItem *A)
{
    delete []A->Info;
    delete A;
    Size--;
}
template<typename TInfo>bool TDeque<TInfo>::DelFront(TInfo &q)
{
    if(Front==NULL)
        return false;
    else
    {
        q=Front->Info;
        TDequeItem*p=Front;
        Front=Front->Next;
//      Front->Prev=NULL;
        DeleteItem(p);
        return true;
    }
}
template<>bool TDeque<char*>::DelFront(char* &a)//Вот проблема в этом месте
{
    if(Front==NULL)
        return false;
    else
    {
        delete[]a;
        a=new char[strlen(Front->Info)+1];
        strcpy(a,Front->Info);
        TDequeItem*p=Front;     
        Front=Front->Next;
//      Front->Prev=NULL;
        DeleteItem(p);
        return true;
    }
}
Текст ошибки:
1>c:\users\admin\documents\visual studio 2008\projects\labrab\deque(template )\deque_header.h(188) : error C2908: explicit specialization; 'bool TDeque<TInfo>::DelFront(TInfo &)' has already been instantiated

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