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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
v1negret
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
#1

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

01.07.2014, 05:46. Просмотров 233. Ответов 6
Метки нет (Все метки)

Предположим, у меня есть класс прямоугольника Window;
И я реализовал в нем функцию вывода
C++
1
void Window::print (std::string& s) {...}
Которая работает

Преположим, я создал Window w1;
Но я хочу, чтобы я мог в main.cpp писать не
...
C++
1
w1.print("stroka");
а
C++
1
w1<<"stroka";
Надеюсь, суть понятна
Как это сделать, подскажите, пожалуйста
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kodv
 Аватар для kodv
1396 / 1070 / 235
Регистрация: 11.04.2011
Сообщений: 2,588
Завершенные тесты: 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
1396 / 1070 / 235
Регистрация: 11.04.2011
Сообщений: 2,588
Завершенные тесты: 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
1396 / 1070 / 235
Регистрация: 11.04.2011
Сообщений: 2,588
Завершенные тесты: 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++ Функция ввода / вывода
Friend функция вывода C++

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

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

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

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