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

Перегрузка оператора << - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Цвет текста в консоли http://www.cyberforum.ru/cpp-beginners/thread1207903.html
Можно ли вывести в консоль разноцветный текст без использования WinAPI? Например, TEST
C++ 2 массива с одинаковой информацией 2 массива с одинаковой инфомацией разная длинна... double* save = (double*)::malloc( windows_size *sizeof(double) * 512); double* sort_short = (double*)::malloc( windows_size *sizeof(double)); нам нужна информация для теста только из начала, save windows_size = 256 глобально беру информацию из save первые 256 и пишу в sort_short во всю его длинну http://www.cyberforum.ru/cpp-beginners/thread1207865.html
Массив возвращает адрес памяти, а нужно значение C++
Программа возвращает вместо значения, какие то длинные цифры. Я думаю это адрес памяти, а нужно значение элемента. int Stack:: top() { if (count>0) {return max_stack; // vivesti poslednii element }
C++ Максимальный по модулю элемент массива
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) максимальный по модулю элемент массива; 2) сумму элементов массива, расположенных между первым и вторым положи¬тельными элементами. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
C++ Количество элементов массива, лежащих в диапазоне от А до В http://www.cyberforum.ru/cpp-beginners/thread1207857.html
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; 2) сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей элементов.
C++ В одномерном массиве, состоящем из п вещественных элементов, вычислить: Если кто может, то помогите пожалуйста с 3 программами. Буду очень благодарен. В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов массива, расположенных после минимального элемента. Упорядочить элементы массива по возрастанию модулей элементов. подробнее

Показать сообщение отдельно
satisfactor
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 51
14.06.2014, 17:47     Перегрузка оператора <<
Код класса:
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <cstdlib>
#include <cassert>
 
#ifndef ARRAY_H
#define ARRAY_H
 
template< class T, class T1 >
class Array{
    friend std::ostream& operator<< ( std::ostream&, Array& );
    friend Array operator+ (Array&, Array&);
public:
    //overload
    T& operator[] ( T1 );                                                       //[] not const
    T& operator[] ( T1 ) const;
    //constructors
    Array( T1 = 1 );
    Array( Array< T, T1 > & );
    //get
    T1 getSize( void ) const;
    //add
    void addArray( const Array< T, T1 >& );
    //another
    std::ostream& show( char, std::ostream & = std::cout );
    //destructor
    ~Array();
private:
    T* data;
    T1 size;
};
 
//constructor
template< class T, class T1 >
Array< T, T1 >::Array( T1 num_of_elements ) {
    assert( num_of_elements > 0 );
    size = num_of_elements;
    data = (T*)realloc( NULL, sizeof(T)*size );
}
 
template< class T, class T1 >
Array< T, T1 >::Array( Array< T, T1 >& ref ) {
    size = ref.getSize();
    data = (T*)realloc(NULL, sizeof(T)*size);
    assert(data!=0);
    //copy
    for ( T1 i = 0; i < size; i++ )
        data[i] = ref[i];
}
 
//add
template< class T, class T1 >
void Array< T, T1 >::addArray( const Array< T, T1 >& ref ) {
    T1 buffer = size;
    size += ref.getSize();
    data = (T*)realloc( data, sizeof(T)*size );
    assert( data != 0 );
    //copy elements
    for (;buffer < size; buffer++) {
        data[buffer] = ref[buffer-ref.getSize()+1];
    }
}
 
//get
template< class T, class T1 >
T1 Array< T, T1 >::getSize( void ) const {
    return size;
}
 
//another
template< class T, class T1 >
std::ostream& Array< T, T1 >::show( char space, std::ostream & output) {
    for ( T1 i = 0; i < size; i++ )
        if ( i < size - 1 )
            output << data[i] << space;
        else
            output << data[i];
 
    return output;
}
 
//overloads
template< class T, class T1 >
std::ostream& operator<< ( std::ostream& output, Array< T, T1 >& ref ){
    return (ref.show(output.fill(), output));
}
 
template< class T, class T1 >
Array< T, T1 > operator+ ( Array< T, T1 >& a1, Array< T, T1 >& a2 ){
    Array< T, T1 > result( a1 );
    result.addArray( a2 );
    return result;
}
 
template< class T, class T1 >
T& Array< T, T1 >::operator[] ( T1 index ) {
    assert( index >= 0 && index < size );
    return data[index];
}
 
template< class T, class T1 >
T& Array< T, T1 >::operator[] ( T1 index ) const {
    assert( index >= 0 && index < size );
    return data[index];
}
 
//destructor
template< class T, class T1 >
Array< T, T1 >::~Array(){
    if (size == 1)
        delete data;
    else
        delete [] data;
}
 
#endif


Код main
Кликните здесь для просмотра всего текста
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
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
#include "Array.h"
 
int main( void ) {
    Array<int, int> a(2);
    a[0] = 1;
    a[1] = 2;
    Array<int, int> b(3);
    b[0] = 3;
    b[1] = 4;
    b[2] = 5;
 
    Array<int, int> c(a);
    c.addArray(b);
 
 
    cout << a;
 
    cin.get();
    cin.get();
    return 0;
}


И, собственно, ошибка (Visual Studio Express 2010):
Код
1>------ Построение начато: проект: Array, Конфигурация: Debug Win32 ------
1>  Пропуск... (изменения не обнаружены)
1>  Array.cpp
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Array<int,int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$Array@HH@@@Z) в функции _main
1>C:\Users\Sunday\Desktop\test_project\Array\Debug\Array.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru