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

Потоки и сокрытие данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Машинное представление графов http://www.cyberforum.ru/cpp-beginners/thread1492432.html
1 курс. Практика Задание такое: Разработать и реализовать windows - приложение, которое определяет, является ли бинарное отношение, заданное орграфом симметричным и рефлексивным. Граф задан...
C++ Расшифровка ТЗ Простите, за идиотский вопрос, но я немного не понимаю, что здесь требуется. В общем, есть структура, и требуется написать файл с запросами на удаление из одного бинарного файла, насколько я понял.... http://www.cyberforum.ru/cpp-beginners/thread1492429.html
C++ Задача на поиск минимального\максимального числа
Здравствуйте. Начал учить с++ относительно недавно. Решал задачу на поиск максимального и минимального числа. Вот решение: /*Дано четыре числа, вывести на экран то, которое меньшее и то, которое...
Fatal error LNK1120: 2 неразрешенных внешних элементов C++
привет всем , столкнулся с такой проблемой , 1>main.obj : error LNK2001: неразрешенный внешний символ "_D3DXCreateTextureFromFileInMemory@16" 1>main.obj : error LNK2001: неразрешенный внешний символ...
C++ Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов http://www.cyberforum.ru/cpp-beginners/thread1492387.html
Здравствуйте народ,помогите в решении данной задачки с помощью подпрограммы: Дан массив из N элементов. Отсортировать по возрастанию суммы модулей разностей каждого элемента со всеми остальными....
C++ Найти количество нечетных чисел в n-ой строке треугольника Паскаля Во входном файле содержится число n (0 ≤ n ≤ 2⋅10^9). Выходной файл должен содержать одно число — количество нечетных чисел в n-ой строке треугольника Паскаля. подробнее

Показать сообщение отдельно
hoggy
6672 / 2856 / 491
Регистрация: 15.11.2014
Сообщений: 6,364
Завершенные тесты: 1
04.07.2015, 03:20
Цитата Сообщение от senich Посмотреть сообщение
Как обеспечить каскадные вызовы и сокрытие одновременно?
никак.

Цитата Сообщение от senich Посмотреть сообщение
скрыть от него существование функции
тогда вы не сможете выводить в поток.

это:
C++
1
std::cout << obj;
синтаксический сахар вызова функции:
C++
1
operator<<(std::cout, obj);
скроете её, и это перестанет работать.

обходные пути здесь - это для настоящих ценителей:


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
#include <iostream>
 
class example
{
    // --- можно сделать приватным
    // ограничив доступ к функции только избранным
    template<class T>
    ::std::basic_ostream<T>& 
    operator>>( ::std::basic_ostream<T>& os)const
    { 
        return os << "object of example: "<< v; 
    }
 
    
public:
    int v = 10;
    
    // например: только изнутри самого себя
    void aboutMe()const 
    { 
        // каскад, хе-хе
        *this>> (*this>> std::cout << std::endl); 
    }
};
 
int main()
{
    std::cout << "Hello, world!\n";
    
    example().aboutMe();
    
    // error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}’
    //std::cout << example() <<std::endl;
}
ну или так:

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
#include <iostream>
 
class example
{
    struct wrapper
    {
        explicit wrapper(const example& e)
            : ref(e)
        {}
        
        const example& ref;
    };
    
    template<class T> friend
    ::std::basic_ostream<T>& 
    operator<<( ::std::basic_ostream<T>& os, const wrapper& w)
    { 
        return os << "object of example: "<< w.ref.v; 
    }
 
    
public:
    int v = 10;
    
    void aboutMe()const 
    { 
        wrapper w(*this);
        std::cout << w << std::endl<< w<< std::endl;  
    }
};
 
int main()
{
    std::cout << "Hello, world!\n";
    
    example e;
    
    e.aboutMe();
    
    // error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}’
    // std::cout << e <<std::endl;
    
    // error: ‘struct example::wrapper’ is private
    // example::wrapper w(e);
    // std::cout << w <<std::endl;
}
а вообще, вы хотите что-то странное.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru