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

C++

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

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

23.01.2009, 00:29. Просмотров 768. Ответов 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++
нужно перегрузить функцию умножения(*) в данной задаче #include &lt;iostream&gt; using namespace std; class Complex { private: ...

Создать функцию prompt и перегрузить её для параметра разного типа - C++
Создайте функцию prompt( ) для выдачи подсказки пользователю и ожидания ввода данного. Перегрузите функцию prompt( ) так, чтобы она...

Перегрузить функцию sub_array нахождения разности двух массивов и матриц - C++
Привет всем! Столкнулся со сложностями....Помогите сделать лабу! Задание: Перегрузить функцию sub_array нахождения разности двух...

Дополнительно перегрузить логическую операторную функцию для операции | (побитовая дизъюнкция), определяющую параллельность двух отрезков - C++
Собственно все задание Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 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
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 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++
И вообще как называется этот оператор? Может, я слепая, но я даже здесь не нашлаего http://ru.wikipedia.org/wiki/Операторы_в_C_и_C%2B%2B ...

Как перегрузить операторы - C++
Есть класс &quot;Бегемоты&quot; у бегемотов есть пол и вес. Перегрузить операторы (+,-,*,/,) по следующему принципу. Если сложить двух...

Как перегрузить оператор = - C++
ну там чтоб он например сложение делал или чтото другое


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

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

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