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

C++

Войти
Регистрация
Восстановить пароль
 
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
#1

Как перегрузить функцию xcout? - C++

23.01.2009, 00:29. Просмотров 761. Ответов 6
Метки нет (Все метки)

У меня уже мозги не варят... Пожалуйста подскажите как перегрузить функцию xcout что бы в качетве аргумента она получала указалеть на символьную строку.. точнее

создать пеергруженную функцию xcout, получающую в качестве аргумента символьную строку и возращаюшую целое значение...

как я понимаю надо перегрузить << для этого я написал что-то типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
class xcout
{
private:
public:
 friend int operator<<(ostream &out, char *s);
};
int operator<<(ostream &out, char *s)
{
 ....
 return 0;
};
int main()
{
 xcout out;
 char *s=new char[256]="rem is best\n";
 out<<s;
 return 0;
}
а оно выводит ошибку...

binary '<<' : no operator defined which takes a left-hand operand of type 'class xcout' (or there is no acceptable conversion)

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2009, 00:29     Как перегрузить функцию xcout?
Посмотрите здесь:

Как перегрузить оператор []? C++
Как перегрузить оператор = C++
C++ Дополнительно перегрузить логическую операторную функцию для операции | (побитовая дизъюнкция), определяющую параллельность двух отрезков
Как перегрузить оператор C++
Создать абстрактный класс с общими полями и методами. В производных классах перегрузить чисто виртуальную функцию - общая стоимость всех изделий C++
Перегрузить функцию вычисления площади фигуры на плоскости C++
C++ Перегрузить функцию sub_array нахождения разности двух массивов и матриц
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6473 / 2248 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.01.2009, 01:14     Как перегрузить функцию xcout? #2
http://www.cyberforum.ru/cpp-beginne...post48204.html
http://www.cyberforum.ru/cpp-beginne...post47077.html
http://www.cyberforum.ru/cpp-builder...post41222.html
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
23.01.2009, 10:28  [ТС]     Как перегрузить функцию xcout? #3
не.. Немного не то.. В приведённыйх ссылках везде (почти) указываеться параметр потока ostream &ou, а мне надо именно без него... Что-то типа int operator<<(char *s); но так как я написал нельзя... может кто подскажет почему и как это исправить...
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
23.01.2009, 10:43     Как перегрузить функцию xcout? #4
так попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class xcout
{
private:
    string buff;//для теста
public:
    friend xcout& operator<<(xcout &out, char *s);
};
xcout& operator<<(xcout &out, char *s)
{
    out.buff  = s;
    cout<<out.buff.c_str();
    return out;
};
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
23.01.2009, 12:00  [ТС]     Как перегрузить функцию xcout? #5
ISergey спасибо но не получилось...

Код
'operator <<' is ambiguous
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
06.02.2009, 09:23     Как перегрузить функцию xcout? #6
Лучше поздно, чем никогда :ф)

Вообще, оператор << перегружается так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class xcout
{
public:
    int operator<<(const char *s);
};
 
int xcout::operator<<(const char *s)
{
    //...
    return 0;
}
 
int main()
{
    xcout out;
 
    out << "rem is best\n";
 
    return 0;
}
Правда не совсем понятно, что, собственно, программа должна была делать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2009, 10:01     Как перегрузить функцию xcout?
Еще ссылки по теме:

Как перегрузить *. ? C++
Перегрузить функцию возведения в степень C++
C++ Перегрузить функцию умножения(*) для комплексных чисел
Как можно перегрузить [][]? C++
Создать функцию prompt и перегрузить её для параметра разного типа C++

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

Или воспользуйтесь поиском по форуму:
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
06.02.2009, 10:01  [ТС]     Как перегрузить функцию xcout? #7
Спасибо подсказал прямо в яблочко как надо... Закрывайте тему...
Yandex
Объявления
06.02.2009, 10:01     Как перегрузить функцию xcout?
Ответ Создать тему
Опции темы

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