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

Ссылки + классы - C++

Восстановить пароль Регистрация
 
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
25.05.2012, 22:17     Ссылки + классы #1
Есть класс A. В нем перегружаю операцию
C++
1
operator&(A& obj);
Далее в этой функции происходят действия:

C++
1
A &o1 = (somebool ? this : obj)
Однако, это ошибка. А как правильно?

Добавлено через 11 минут
upppp
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 22:17     Ссылки + классы
Посмотрите здесь:

C++ классы
C++ Классы
C++ классы
Классы!!! C++
C++ Классы в C++
классы C++
классы C++
Классы C++
Ссылки. Указатели. Классы C++
Классы и ссылки C++
Зачем нужны rvalue ссылки, если есть универсальные ссылки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.05.2012, 22:42     Ссылки + классы #2
оператор взятия адреса - это одно.
оператор неявного преобразования - это другое.
вот это: operator&(A& obj); - это хз что.
вы что-то не то делаете. какова конечная цель? и какой бы она ни была, лучше не использовать ни один из этих операторов.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
25.05.2012, 22:46  [ТС]     Ссылки + классы #3
DU, я передаю одному объекту класса ссылку на другой объект класса. Потом, внутри функции, мне нужно снова создать ссылки на 1 и 2 объект.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.05.2012, 22:47     Ссылки + классы #4
C++
1
A& obj1 = (somebool ? *this : obj); //называть "о" - гореть в аду оЧеПяток
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.05.2012, 22:52     Ссылки + классы #5
сигнатура оператора кривая. похоже что вы хотели все таки оператор преобразования. но это плохой подход. что мешает сделать нормальную функцию и ее вызывать? так будет явно и понятно. в случае с операторами код получается мутный.
A& o1 = (somebool ? *this : obj);
vs
A& o1 = (somebool ? this->GetA() : obj); // this-> можно не писать
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
25.05.2012, 23:02  [ТС]     Ссылки + классы #6
Jupiter, это только здесь для простоты такие короткие =)

проблему решил

решение:

C++
1
2
3
4
5
6
class A
{
  void create(A *self){ _self = self; }
  void func(A &object){ A &obj1 = somebool ? *_self : object; }
  A *_self;
};
Yandex
Объявления
25.05.2012, 23:02     Ссылки + классы
Ответ Создать тему
Опции темы

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