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

перегрузка операторов и шаблоны - C++

Восстановить пароль Регистрация
 
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
06.11.2011, 17:11     перегрузка операторов и шаблоны #1
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
#include <iostream>
using namespace std;
 
template <class X, int size> class type {
    X mas[size];
public:
    type() {
        for(int i = 0; i < size; i++) {
            cout << "Write a[" << i << "] = ";
            cin >> mas[i];
        }
    }
    
    void reverse() {
        X temp[size];
        for(int i = 0; i < size; i++) 
            temp[i] = mas[size - i - 1];
        for(int i = 0; i < size; i++)
            mas[i] = temp[i];
    }
 
 
    ostream &operator<<(ostream &stream, type o) {
        for(int i = 0; i < size; i++)
            stream << "mas[" << i << "] = " << o.mas[i] << endl;
        return stream;
    }
 
    void show() {
        for(int i = 0; i < size; i++)
            cout << "mas[" << i << "] = " << mas[i] << endl;
    }
 
};
 
 
 
int main()
{
    type<int, 5> obj;
    obj.reverse();
    cout << obj;
    return 0;
}
с классами организовать оператор вывода не проблема, а вот с использованием шаблона возникла проблема. компилятор ругается вот на это cout << obj. Помоги сделать оператор вывода информации с использованием шаблона.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 17:11     перегрузка операторов и шаблоны
Посмотрите здесь:

Перегрузка оператора [] и шаблоны. C++
C++ перегрузка операторов С++
C++ Перегрузка и шаблоны
Перегрузка операторов. C++ C++
Перегрузка операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
06.11.2011, 17:12     перегрузка операторов и шаблоны #2
friend
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
06.11.2011, 17:13  [ТС]     перегрузка операторов и шаблоны #3
спасибо, работает.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.11.2011, 17:19     перегрузка операторов и шаблоны #4
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
#include <iostream>
using namespace std;
 
template <class X, int size> class type {
        X mas[size];
public:
        friend ostream &operator<<(ostream &stream, type<X, size> o) 
        {
           for(int i = 0; i < size; i++)
           { 
                stream << "mas[" << i << "] = " << o.mas[i] << endl;
           } 
           return stream;
        } 
        
        type() {
                for(int i = 0; i < size; i++) {
                        cout << "Write a[" << i << "] = ";
                        cin >> mas[i];
                }
        }
        
        void reverse() {
                X temp[size];
                for(int i = 0; i < size; i++) 
                        temp[i] = mas[size - i - 1];
                for(int i = 0; i < size; i++)
                        mas[i] = temp[i];
        }
 
        void show() {
                for(int i = 0; i < size; i++)
                        cout << "mas[" << i << "] = " << mas[i] << endl;
        }
 
};
 
int main()
{
        type<int, 5> obj;
        obj.reverse();
        cout << obj;
        return 0;
}
не подменяйте понятия

Добавлено через 30 секунд
опередили
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
06.11.2011, 17:29  [ТС]     перегрузка операторов и шаблоны #5
alex_x_x, а в чем разница между type<X, size> o и type o? в аргументах оператора?
да и ещё вопрос тогда, хотя программа и работает, но компилятор подсвечивает size как неопределенный? и вот скрин (конечно все работает но хочется знать в чем дело)
Миниатюры
перегрузка операторов и шаблоны  
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.11.2011, 17:31     перегрузка операторов и шаблоны #6
Цитата Сообщение от LostCoast Посмотреть сообщение
а в чем разница между type<X, size> o и type o? в аргументах оператора?
никакой - просто есть случаи (как этот) когда параметры шаблонных типов можно не указывать, так как они известны из контекста
Цитата Сообщение от LostCoast Посмотреть сообщение
да и ещё вопрос тогда, хотя программа и работает, но компилятор подсвечивает size как неопределенный? и вот скрин
парсер студии недостаточно умный, чтобы понять откуда они взялись
Yandex
Объявления
06.11.2011, 17:31     перегрузка операторов и шаблоны
Ответ Создать тему
Опции темы

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