Russian Qt Forum
Ноябрь 27, 2024, 05:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по ссылкам и указателям.  (Прочитано 3210 раз)
GPPsoft
Гость
« : Январь 23, 2014, 08:21 »

Здравствуйте. В C# привык передавать ссылки на объекты... Вообщем проблема такая. Нужно передать указатель или ссылку в функцию и присвоить "местной глобальной" переменной? Совсем запутался в этих указателях и ссылках. Грустный Спасибо.

Код:
Session *session;
..............................

void setSession(const Session *session)
{
     this.session=session;
}

void myFunc()
{
    session->тра_ля_ля...
}

« Последнее редактирование: Январь 23, 2014, 08:46 от GPPsoft » Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #1 : Январь 23, 2014, 09:12 »

По указателю:
Код:
void setSession(Session *s) {
     this.session=s;
}
По ссылке:
Код:
void setSession(Session& s) {
     this.session=&s;
}

Как вам удобнее.
Единственное отличие в том, что ссылку можно инициализировать только один раз.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Январь 23, 2014, 09:26 »

А о каком языке идет речь? (т.к. this. в С++ нет)
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #3 : Январь 23, 2014, 09:37 »

Что значит нет? А куда он делся? Вы имеете в виду, что автор пропустил в реализации методов
Код:
Foo::
?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Январь 23, 2014, 09:39 »

Что значит нет? А куда он делся? Вы имеете в виду, что автор пропустил в реализации методов
Код:
Foo::
?
И ещё не . а ->
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #5 : Январь 23, 2014, 09:45 »

И ещё не . а ->

Ага, сам на этом часто спотыкаюсь
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Январь 23, 2014, 09:53 »

Что значит нет? А куда он делся? Вы имеете в виду, что автор пропустил в реализации методов
Код:
Foo::
?
this-> есть, this. (с точкой) нет. Ну и если переменная объявлена вне класса, this не катит. Ладно, пример
Код
C++ (Qt)
const Session * theSession = 0;
 
void setSession( const Session * session )
{
    theSession = session;
}
Не запрещено, но плохо давать глобальной переменной рядовое имя как "session" и потом чего-то там крутить с this. Использовать this можно/нужно если есть неоднозначность в именах, но создавать ее искусственно ни к чему
Код
C++ (Qt)
void Foo::setSession( Session * session )
{
 this->session = session;  // class Foo имеет член session
}
 
Так можно, но для меня проще и лучше так
Код
C++ (Qt)
void Foo::setSession( Session * _session )
{
 session = _session;  // class Foo имеет член session
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.124 секунд. Запросов: 22.