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

Шаблоны перегрузка ввода/вывода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решение задачи линейного поиска элемента в заданном вещественном массиве http://www.cyberforum.ru/cpp-beginners/thread1002198.html
Написать программу, решающую задачу линейного поиска элемента в заданном вещественном массиве
C++ Вывод в файл *.txt в многофайловом проекте Нужно перенаправить cout в файл. Я выводил в информацию в файл просто с помощью добавления такого вот кусочка кода: #include <fstream> std::ofstream outputInFile("log.txt"); //все cout заменяем на outputInFile //получается вместо cout<<"Hi!"; //вот это outputInFile<<"Hi!"; Но все дело в том, что это работает при использовании в проекте где один файл. http://www.cyberforum.ru/cpp-beginners/thread1002196.html
C++ Умножение матриц
Модератор, удали тему! Проблема решена
Вычислить периметр и площадь прямоугольного треугольника C++
Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катеров a и b.
C++ объеденение массивов http://www.cyberforum.ru/cpp-beginners/thread1002182.html
Нужно поэлементно сложить массивы, результат вывести в Memo или куда нибудь еще... Проблема в том, что они разных типов..подскажите как быть.. void __fastcall TForm1::Button1Click(TObject *Sender) { float *buffer1 = new float; buffer1 = 8.592; buffer1 = 6.6666; buffer1 = 7.5589;
C++ Книги для чайников На данyый момент, прочитал книгу "С++ за 21 день" плюс имею знания в Юникс ОС, вузе выучил сети и периферию, хорошо ориентируюсь в программирование, но не имею малейшего понятия как создаются реальные проекты ... Купил 3 книги (по совету хабра: "5 книг которые должен прочитать каждый программист"): Таненбаум "Архитектура", "Аллгоритмы, построение и анализ" Томас Кормен, "Совершенный код"... подробнее

Показать сообщение отдельно
qwestcl
10 / 10 / 1
Регистрация: 30.09.2012
Сообщений: 172
09.11.2013, 00:28     Шаблоны перегрузка ввода/вывода
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
#include <iostream>
#include <assert.h>
#include <stdlib.h>
 
using namespace std;
 
template <class T> class Array {
    friend ostream &operator<<(ostream &, const Array <T> &);
    friend istream &operator >>(istream &, Array<T>&);
public:
    Array(int = 10);
    ~Array();
private:
    T *ptr; //указатель на 1й элемент
    int size; //размер массива
    //    static
};
 
template <class T> Array<T>::Array(int arraySize) {
    size = arraySize;
    ptr = new T[size];
    assert(ptr != 0); //завершить, если память не выделена
}
 
template <class T> Array<T>::~Array() {
    delete [] ptr;
}
 
template <class T> istream& operator>> (istream& in,  Array<T>& x) {
    for (int i = 0; i < x.size; ++i) {
        in >> x.ptr[i];
    }
    return in;
}
 
template <class T> ostream& operator << (ostream & out, const Array<T> &x) {
    for (int i = 0; i < x.size; ++i) {
        out << x.ptr[i] << " ";
 
    }
    return out;
}
 
int main() {
    Array<int> a(5);
    cin >> a;
    cout << a;
 
    return 0;
}
Ошибки:
C++ (Qt)
1
2
3
4
D:\ProgQt\untitled0-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled0\main.cpp:8: предупреждение: friend declaration 'std::ostream& operator<<(std::ostream&, const Array<T>&)' declares a non-template function
D:\ProgQt\untitled0-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled0\main.cpp:9: предупреждение: friend declaration 'std::istream& operator>>(std::istream&, Array<T>&)' declares a non-template function
D:\ProgQt\untitled0-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled0\main.cpp:48: ошибка: undefined reference to `operator>>(std::istream&, Array<int>&)'
D:\ProgQt\untitled0-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled0\main.cpp:49: ошибка: undefined reference to `operator<<(std::ostream&, Array<int> const&)'
В первых, вроде как жалуется на то, что это не шаблонная ф-ция, хотя вроде сделано все так.
Буду благодарен за помощь в перегрузке ввода/вывода для шаблонного класса!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru