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

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

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

перегрузка operator= для очереди C++
operator[][] для класса C++
[C++] перегрузка operator<< для шаблонного класса C++
operator char() или operator int() C++
operator= для шаблона класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 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
429 / 364 / 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
429 / 364 / 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++
Почему при выводе указателя получаем для char - значение по адресу, а для других типов - адрес C++
Реализация operator + через operator += C++

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

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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 << для указателя
Ответ Создать тему
Опции темы

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