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

Шаблон перегруженого оператора ввода вывода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это? http://www.cyberforum.ru/cpp-beginners/thread1233162.html
Привет! Ну вот допустим: int *X = new int; Можно ли по указателю X как то явно узнать, что он ссылается на непрерывный блок памяти, в котором подряд идут 10-ть интов ? Вроде какая то была...
C++ Пул потоков на основе boost::lockfree::queue В книге "Энтони Уильямс - Параллельное программирование на С++ в действии" обсуждается пул потоков на основе самописной потокобезопасной очереди:#include <iostream> #include <vector> #include... http://www.cyberforum.ru/cpp-beginners/thread1233160.html
C++ Не найдена зависимая сборка
Нашел статью, в которой говорится, что OpenMP от VS2005 работает лучше, нежели от VS2010. Собрал проект согласно инструкции; запустил, потестил и согласился с ней. Вот только одно но: собранный...
C++ Как сделать чтобы каждый раз рандомное число менялось?
Вопрос таков: Как сделать чтобы каждый раз рандомное число менялось? И каким образом или на каком этапе "выбирается" это число, т.к сколько бы раз я не компилировал всегда выводится 42. ...
C++ Вывести одно целое число– количество возможных разбиений войска на отряды http://www.cyberforum.ru/cpp-beginners/thread1233128.html
Согласно многовековой традиции, сэр Петрейн каждую субботу ходит охотиться на дракона. Однако, за один вечер до выхода в очередной поход, он понял, что просто невозможно идти охотится на дракона без...
C++ Двойной цикл: нужно получить первое значение если выполнится условие есть двойной цикл и нужно получить первое значение если выполнится это условие if (!field->IsWin()) получаем значения и останавливаем циклы как это сделать? for (int x = 0; x < columns; ++x) { ... подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1818 / 1176 / 232
Регистрация: 16.05.2013
Сообщений: 3,105
Записей в блоге: 5
Завершенные тесты: 1
24.07.2014, 13:57
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class X>
class Larray                            
    {
                        ......................
        public:
            ......................
            friend ostream &operator << (ostream &stream, Larray<X> &a);//объявление не шаблонной функции
    };
 
template <class X> ostream &operator<< (ostream &stream, Larray<X> &a) //объявление и определение шаблонной функции     
    {
            .....................
        return stream;
    }
Тут компилятор ругается на отсутствие определения дружественной функции. Но если сделать такую казяку базяку все будет работать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <class X>
class Larray
{
    public:
    //template <class Y>
    friend ostream &operator << (ostream &stream, Larray<X> &a)
    {
        return stream;
    }
};
 
template <class X> ostream &operator<< (ostream &stream, Larray<X> &a)
{
    return stream;
}
int main() {
    Larray<int> c;
    cout << c;
    return 0;
}
Потому как теперь вы определили дружественную функцию.
Это к тому, что у вас объявляются две разные функции: одна не шаблонная вторая шаблонная. Объявление класса шаблонным не делает таковой дружественную функцию.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru