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

Перегруженный operator<< - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран суммарный результат, указав число студентов сдавших и проваливших экзамен http://www.cyberforum.ru/cpp-beginners/thread1240427.html
День добрый помогите решить задачу: есть 10 студентов ( 10 раз на екран должно высвечиватся"Введите результат" результат- если пользователь пишет 1,значит студент сдал,если пишет 2 - провалил...
C++ Как изменить выводное окно? Я меняю выводное окно (или как там называется штука которая появляется при запуске программы) через "Свойства" Но когда я отправляю программу на другой компьютер, все изменения пропадают! Как мне... http://www.cyberforum.ru/cpp-beginners/thread1240378.html
C++ На основании строки генерируем все возможные слова
имею такой код #include <iostream> #include <math.h> #include <sstream> using namespace std; void ALLWords(string A, string &w, int N) { if ( N == w.size() ) { ...
C++ Какие соглашения действуют в C++?
Например, в PHP следующие соглашения наименования: Имена классов с большой буквы (SomeClass) Имена переменных с маленькой буквы (some_var) Имена функций с маленькой буквы (someFunction) А...
C++ Периодическая генерация событий сообщений окну - как реализовать? http://www.cyberforum.ru/cpp-beginners/thread1240354.html
Почитал немного про создание оконных приложений - очень интересно. Даже пятнашки, думаю, могу навскидку за несколько минут написать. А тетрис - не могу :) Потому что в пятнашках нужна только реакция...
C++ Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";" Уважаемые форумчане помогите построить решение. Есть в решении строящаяся библиотека (строит .dll) и в этом же решении программа похоже использующая эту библиотеку. Отдельно библиотека строится без... подробнее

Показать сообщение отдельно
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70

Перегруженный operator<< - C++

09.08.2014, 20:28. Просмотров 272. Ответов 7
Метки (Все метки)

Есть допустим такая дружественная функция:

объявление
C++
1
template<typename Type> friend std::ostream& operator<<(std::ostream&, Stack<Type>&);
определение
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename Type>
std::ostream& operator<<(std::ostream& stream, Stack<Type>& obj_show)           
{
    Stack<Type>::node* ptr = obj_show.top;
    while (ptr)
    {
        stream << ptr->cell;
        ptr = ptr->priv;
    }
 
    return stream;
}
не вдаваясь в подробности — шаблон класса:
C++
1
2
3
4
5
template<typename Type>
class Stack
{
private:
.....
У меня вопрос: как работает даная дружественная функция? Она, как я понимаю, сама по себе независимая шаблонная функция и выходит, что принмая аргумент, допустим Stack<int> она определяется как Stack<Stack<int> > или это не так? Все в принципе работает, но я не понимаю механизма. Если в шаблоне заменить Stack<Type> на просто Type появляется ошибка: неоднозначная операция " << ". Почему в первом случае нет этой неоднозначности? Спаисбо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.