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

переопределение шаблонов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как работает программа? двойной указатель http://www.cyberforum.ru/cpp-beginners/thread768869.html
Здравствуйте,подскажите,пожалуйста,как работает программа! а в частности,зачем двойной указатель и как при помощи него все работает! void InsertNth(struct node** headRef, int index, int data) { if (index == 0) Push(headRef, data); else { struct node* current = *headRef; int i; for (i=0; i<index-1; i++)
C++ Ввести массив размерностью n элементов Ввести массив размерностью n элементов. N вводит пользователь. Вычислить среднее арифметическое положительных элементов массива. Буду очень благодарен. А то что то разобраться никак не могу. http://www.cyberforum.ru/cpp-beginners/thread768863.html
C++ Описать каталог сотовых телефонов
Доброе время суток! Исходные данные Дано: • название и структура таблицы данных, в которой хранятся записи; • класс, содержащий поля и функции. В каждом классе должны быть реализованы функции загрузки из файла и сохранения в файл, а также ряд дополнительных функций в соответствии с вариантом задания Поля -название каталога; -массив товаров;
C++ Нужен человек готовый объяснить некоторые вещи и исправить мои ошибки
Я изучаю C++ и мне хотелось бы найти человека, который сможет мне рассказать и показать, как исправить мои ошибки по мере их поступления. Для чего я это написал, просто делая некоторые примеры возникают проблемы с заданиями=> размещаю их на различных форумах=> жду много времени=> ни одного ответа. Просто простые задачи cout<< 2+2<<end; все кричат по 100 постов, а если попадается что-то...
C++ Описать структуру с именем TRAIN http://www.cyberforum.ru/cpp-beginners/thread768838.html
Вот задание Описать структуру с именем TRAIN, содержащий следующие поля: • Номер поезда; • Название пункта назначения; • Время отправления. Программа должна выполнять следующие действия: • Ввод данных в массив элементов типа TRAIN; • Благоустройство элементов под названием пункта назначения; • Вывод на экран информации о поездах, чье время отправления больше того, что вводится с...
C++ Комментарии и разбор кода #include "stdafx.h" #include "tchar.h" #include "iostream" #include "string" #include "math.h" #include "conio.h" using namespace std; class par { private: подробнее

Показать сообщение отдельно
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.01.2013, 20:57  [ТС]     переопределение шаблонов
gray_fox, сделал вот так, только для float, запилил в отдельный хэдер но все равно выдает вот что:

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#ifndef ARRAY3_H
#define ARRAY3_H
 
#include <iostream>
#include <locale.h>
#include <assert.h>
using namespace std;
 
template<>
class Array<float>
{
    template<>
    friend wostream& operator<<(wostream &, const Array<float> &);
    template<>
    friend wistream& operator>>(wistream &, const Array<float> &);
 
    public:
        Array(int = 10);
        Array(const Array &);
        ~Array();
        int getSize() const;
        const Array& operator=(const Array &);
 
        int operator==(const Array &) const;
        int operator!=(const Array &) const;
        int &operator[](int);
        static int getArrayCount();
 
    private:
        int *ptr;
        int size;
 
        static int ArrayCount;
};
 
template<>
int Array<float>::ArrayCount = 0;
 
template<>
Array<float>::Array(int arraySize)
{
    ++ArrayCount;
    size = arraySize;
    ptr = new int[size];
    assert(ptr != 0);           //завершение если память не выделена
 
    for(int i = 0; i < size; i++)
        ptr[i] = 0;                 //присвоение начальных значений
}
 
template<>
Array<float>::Array(const Array &init)
{
    ++ArrayCount;
    size = init.size;
    ptr = new int[size];
    assert(ptr != 0);           //завершение если память не выделена
 
    for(int i = 0; i < size; i++)
        ptr[i] = init.ptr[i];                   //копирование init в объект
}
 
template<>
Array<float>::~Array()
{
    --ArrayCount;
    delete []ptr;
}
 
template<>
int Array<float>::getSize() const {return size;}
 
template<>
const Array<float>& Array<T>::operator=(const Array &right)
{
    if(&right != this)
    {
        delete []ptr;
        size = right.size;
        ptr = new int[size];
        assert(ptr != 0);
 
        for(int i = 0; i < size; i++)
            ptr[i] = right.ptr[i];
    }
 
    return *this;               //позволяет = y = z
}
 
template<>
int Array<float>::operator ==(const Array &right) const
{
    if(size != right.size)
        return 0;
 
    for(int i = 0; i < size; i++)
        if(ptr[i] != right.ptr[i])
            return 0;
 
    return 1;
}
 
template<>
int Array<float>::operator !=(const Array &right) const
{
    if(size != right.size)
        return 1;
 
    for(int i = 0; i < size; i++)
        if(ptr[i] != right.ptr[i])
            return 1;
 
    return 0;
}
 
template<>
int &Array<float>::operator [](int subscript)
{
    assert(0 <= subscript && subscript < size);
 
    return ptr[subscript];
}
 
template<>
int Array<float>::getArrayCount() {return ArrayCount;}
 
template<>
wistream& operator>>(wistream &inpyt, const Array<float> &a)
{
    for(int i = 0; i < a.getSize(); i++)
        inpyt >> a.ptr[i];
 
    return inpyt;       //позволяет cin >> x >> y
}
 
template<>
wostream& operator<<(wostream &outpyt, const Array<float> &a)
{
    wcout << "\nFloat\n";
    for(int i = 0; i < a.getSize(); i++)
    {
        outpyt << a.ptr[i] << ' ';
    }
 
    return outpyt;      //позволяет cout << x << y
}
 
#endif ARRAY3_H
И ошибки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'operator <<' : a friend function definition cannot be a specialization of a function template
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(15) : error C3637: 'operator >>' : a friend function definition cannot be a specialization of a function template
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(37) : error C2998: 'int Array<float>::ArrayCount' : cannot be a template definition
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(49) : error C2910: 'Array<float>::{ctor}' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(61) : error C2910: 'Array<float>::{ctor}' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(68) : error C2910: 'Array<float>::~Array' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(71) : error C2910: 'Array<float>::getSize' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(74) : error C2065: 'T' : undeclared identifier
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(74) : error C2955: 'Array' : use of class template requires template argument list
1>        c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array1.h(11) : see declaration of 'Array'
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(74) : error C2955: 'Array' : use of class template requires template argument list
1>        c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array1.h(11) : see declaration of 'Array'
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(88) : error C2910: 'Array<V>::operator =' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(101) : error C2910: 'Array<float>::operator ==' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(114) : error C2910: 'Array<float>::operator !=' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(122) : error C2910: 'Array<float>::operator []' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(125) : error C2910: 'Array<float>::getArrayCount' : cannot be explicitly specialized
1>c:\users\vanya\documents\visual studio 2008\projects\templ\templ\array3.h(131) : fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Build log was saved at "file://c:\Users\Vanya\Documents\Visual Studio 2008\Projects\templ\templ\Debug\BuildLog.htm"
 
Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru