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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Игра кости http://www.cyberforum.ru/cpp-beginners/thread256173.html
Всем привет! Помогите пожалуйста перевести исходник программы с дельфи на с++ я не могу разобраться сама. Программа небольшая две-три процедурки.
C++ вопрос про скобки Здравствуйте, получил задание написать программу, смысл которой заключается в умножении матрицы на столбец. Матрица статическая, функция умножения пишется собственная. Программу написал, единственное, что не могу понять, почему без скобок по обе стороны указателя на тип (строка 51) функция не работает? Объясните пожалуйста этот момент, вот код: #include <iostream> using namespace std;... 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; 7; 9; 8; 7; 6; 5
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
13.03.2011, 02:00     Шаблоны класса и специализация
Нужно реализовать класс двусторонняя очередь- дек на шаблонах работающий для целых типов и для строк типа 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

В чем проблема и как её исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru