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

Функция вывода с использованием класса - C++

Восстановить пароль Регистрация
 
v1negret
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 05:46     Функция вывода с использованием класса #1
Предположим, у меня есть класс прямоугольника Window;
И я реализовал в нем функцию вывода
C++
1
void Window::print (std::string& s) {...}
Которая работает

Преположим, я создал Window w1;
Но я хочу, чтобы я мог в main.cpp писать не
...
C++
1
w1.print("stroka");
а
C++
1
w1<<"stroka";
Надеюсь, суть понятна
Как это сделать, подскажите, пожалуйста
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2014, 05:46     Функция вывода с использованием класса
Посмотрите здесь:

C++ Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! C++
C++ рекуривная функция вывода
C++ функция вывода
C++ Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kodv
 Аватар для kodv
1393 / 1067 / 235
Регистрация: 11.04.2011
Сообщений: 2,585
Завершенные тесты: 1
01.07.2014, 06:14     Функция вывода с использованием класса #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Надеюсь, поймете, куда вставить:
C++
1
2
3
4
5
Window& operator << (std::string& s)
{
    print(s);
    return *this;
}
v1negret
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 12:40  [ТС]     Функция вывода с использованием класса #3
Понимаю, куда вставлять, но у меня print реализован посимвольным считыванием

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Window::print(const std::string& s)
{
 
    for (int i=0; i<s.size(); ++i)
    {
 
        ::MoveTo(x_+cur_x_, y_+cur_y_);
        std::cout<<s[i];
        ++cur_x_;
        if(cur_x_==w_)
        {
            cur_x_=0;
            ++cur_y_;
        }
    }
}
если я делаю из функции оператор, т.е.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Window& operator << (const std::string& s)
{
 
    for (int i=0; i<s.size(); ++i)
    {
 
        ::MoveTo(x_+cur_x_, y_+cur_y_);
        std::cout<<s[i];
        ++cur_x_;
        if(cur_x_==w_)
        {
            cur_x_=0;
            ++cur_y_;
        }
    }
return *this
}
выдает ошибку

error: 'Window& operator<<(const string&)' must take exactly two arguments|
kodv
 Аватар для kodv
1393 / 1067 / 235
Регистрация: 11.04.2011
Сообщений: 2,585
Завершенные тесты: 1
01.07.2014, 12:47     Функция вывода с использованием класса #4
Цитата Сообщение от v1negret Посмотреть сообщение
Понимаю, куда вставлять
И все таки не понимаете. По this же можно понять, что это метод внутри класса, а не отдельная функция
C++
1
2
3
4
5
6
7
8
9
10
11
сlass Window: public Что-то
{
// Что то выше
public:
    Window& operator << (const std::string& s)
    {
        print(s);
        return *this;
    }
// Что то ниже
};
v1negret
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 12:55  [ТС]     Функция вывода с использованием класса #5
В таком случае, и правда не понимаю
У меня в .hpp только объявляются функции, в .cpp определяются
Как я могу также сделать с оператором?
kodv
 Аватар для kodv
1393 / 1067 / 235
Регистрация: 11.04.2011
Сообщений: 2,585
Завершенные тесты: 1
01.07.2014, 13:06     Функция вывода с использованием класса #6
v1negret, в hpp
C++
1
2
3
4
5
6
7
сlass Window: public Что-то
{
// Что то выше
public:
    Window& operator << (const std::string&);
// Что то ниже
};
в .cpp
C++
1
2
3
4
5
Window& Window::operator << (const std::string& s)
    {
        print(s);
        return *this;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 13:18     Функция вывода с использованием класса
Еще ссылки по теме:

Как сделать, чтобы функция класса могла работать с обьектами другого класса C++
Перегруженная функция вывода >> C++
C++ Функция ввода / вывода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
v1negret
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 13:18  [ТС]     Функция вывода с использованием класса #7
может, еще и поможете с автоматическим сдвигом?
то есть, чтобы текст не обрезался, а прокручивался в выделенной области
то есть, если текст выходит за выбранную область, первая строка стиралась, все сдвигалось бы вверх и текст печатался дальше

как доделать мою же функцию print?
Yandex
Объявления
01.07.2014, 13:18     Функция вывода с использованием класса
Ответ Создать тему
Опции темы

Текущее время: 23:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru