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

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

Войти
Регистрация
Восстановить пароль
 
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
#1

operator << для указателя - C++

26.05.2013, 19:24. Просмотров 397. Ответов 14
Метки нет (Все метки)

В общем, есть у меня кастомный класс, указатель на который используется практически всеми классами программы. Для самого класса перегружен <<, однако использовать богомерзкую конструкцию *(pointer)<< желания нет никакого. Вроде как есть возможность вне классов перегружать этот оператор, только вот как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 19:24     operator << для указателя
Посмотрите здесь:

Operator< для класса - C++
Всем добра, что-то я туплю подскажите как определить operator&lt; для класса, в классе два значение если какое-нибудь меньше то тру. class...

operator[][] для класса - C++
Добрый день, создал класс где храниться массив, и хотелось бы иметь напрямю доступ через по типу class Matrix { .... int ** data; ...

Перегрузка operator+ для массивов - C++
Здравствуйте. Мне надо решить следующую задачу: сложить два массива в один, используя перегрузку операторов(перегрузить operator+). У...

Перегрузка operator= для очереди - C++
Надо присвоить очереди i2 значения i, не пойму, вообще правильно ли делаю? template&lt;class T&gt; queue&lt;T&gt;&amp; queue&lt;T&gt;::operator= ( queue&lt;T&gt;&amp;...

Почему при выводе указателя получаем для char - значение по адресу, а для других типов - адрес - C++
Есть следующий код. Результат работы этой программы представлен на рисунке. Почему при выводе указателя для char возвращается значение, а...

operator = для объекта, содержащего CStdioFile - C++
Приветствую всех. Возникла проблема с реализацией оператора присваивания для класса, содержащего CStdioFile. Получить копию...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.05.2013, 19:27     operator << для указателя #2
Цитата Сообщение от PreFX Посмотреть сообщение
Вроде как есть возможность вне классов перегружать этот оператор, только вот как это сделать?
ты имеешь в виду в глобальной форме?
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 19:28  [ТС]     operator << для указателя #3
SeregaC++, ну, похоже на то.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.05.2013, 19:30     operator << для указателя #4
PreFX, дай свой код, я тебе сделаю.
_Mutex
Заблокирован
26.05.2013, 19:32     operator << для указателя #5
C++
1
A operator<<(A a,B b);
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 19:39  [ТС]     operator << для указателя #6
Класс:
C++ (Qt)
1
2
3
4
5
class GuiManager
{
public:
    GuiManager operator << (QString str);//QString - аналог String из STL
};
Должно получиться как-то так:

C++ (Qt)
1
2
GuiManager* gui = new GuiManager;
gui << "Hello World!";
Вот на такую вот конструкцию не ругается, но при попытке запустить код выше матерится -_-
C++ (Qt)
1
GuiManager* operator << (GuiManager* gm, QString str);
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.05.2013, 19:51     operator << для указателя #7
Qt не знаю.
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
#include <iostream>
 
class A 
{
    int x;
 
public:
    A(int _x): x(_x) { }
 
    friend std::ostream& operator<< (std::ostream&, const A&);
};
 
std::ostream& operator<< (std::ostream& os, const A& obj)
{
    return os << obj.x;
}
 
int main()
{
    A* p = new A(11);
 
    std::cout << *p << std::endl;
 
    system("PAUSE");
    return 0;
}
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 19:56  [ТС]     operator << для указателя #8
SeregaC++, возможно, вы меня не поняли. Мне нужно работать с указателем без его разыменовывания. Как я уже показал выше, должно получиться как-то так:
C++ (Qt)
1
2
GuiManager* gui = new GuiManager;
gui << "Hello World!";
_Mutex
Заблокирован
26.05.2013, 20:09     operator << для указателя #9
C++
1
2
3
GuiManager & operator<<(GuiManager & gui,char *str){
    return gui;
};
первый никогда не указатель
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 20:33  [ТС]     operator << для указателя #10
_Mutex, т.е. такая конструкция с указателем невозможна?
_Mutex
Заблокирован
26.05.2013, 20:51     operator << для указателя #11
Цитата Сообщение от PreFX Посмотреть сообщение
_Mutex, т.е. такая конструкция с указателем невозможна?
C++
1
2
3
4
5
6
7
8
9
10
11
12
class GuiManager{
};
 
GuiManager & operator<<(GuiManager & gui,const char *str){
    return gui;
};
 
int main(){
    GuiManager* g=new GuiManager();
    *g<<"aaa"<<"bbb";  
    return 0;
};
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 20:53  [ТС]     operator << для указателя #12
Так можно обойтись без разыменовывания указателя или нет?
_Mutex
Заблокирован
26.05.2013, 20:56     operator << для указателя #13
Цитата Сообщение от PreFX Посмотреть сообщение
Так можно обойтись без разыменовывания указателя или нет?
operator << для указателя
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
26.05.2013, 20:57  [ТС]     operator << для указателя #14
Всё, спасибо -_-
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 21:09     operator << для указателя
Еще ссылки по теме:

Перегрузка operator<< для шаблонного класса - C++
Добрый день не могу понять как реализовать перегрузку &lt;&lt; для шаблонного класса template &lt;class T&gt; class List { public: ...

Перегрузка operator>> для производного класса - C++
Базовый класс: Taxi_Car.h: #pragma once #include&lt;string&gt; using namespace std; class Taxi_Car { string Marka;

Реализовать перегрузку operator+() для пользователского класса - C++
Есть класс ДРОБЬ, его члены ЧИСЛИТЕЛЬ И ЗНАМЕНАТЕЛЬ, а методы - конструктор и методы вывода. исходные данные - 4 обычные дроби. мне нужно...

Vector для указателя - C++
//Form.h ... class Button { public: ...//данные конструктор и методы }; class Group { public:


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

Или воспользуйтесь поиском по форуму:
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
26.05.2013, 21:09     operator << для указателя #15
Перегрузка операторов разрешена только когда один из аргументов является объектом класса определенного пользователем. Для примитивных типов ( встроенные типы и указатели ) перегрузка не разрешается.
Если, к примеру, справа от оператора будет стоят какой то Ваш класс, то все будет работать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A {
 
};
 
class B {
 
};
 
A *operator<<( A *a, B &b ) {
   return a;
}
 
int main() {
   A *a = new A;
   B b1, b2;
   
   a << b1 << b2;
   
   return 0;
}
Yandex
Объявления
26.05.2013, 21:09     operator << для указателя
Ответ Создать тему
Опции темы

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