powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по указателям и ссылкам
13 сообщений из 13, страница 1 из 1
Вопрос по указателям и ссылкам
    #38535194
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. В C#,Java привык передавать ссылки на объекты... Вообщем проблема такая. Нужно передать указатель или ссылку в функцию и присвоить "местной глобальной" переменной? Совсем запутался в этих указателях и ссылках. :( Как сделать подобное на C++? Спасибо!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Session *session;
..............................

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

void myFunc()
{
    session->тра_ля_ля...
}
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535457
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
const Session *session;

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

void myFunc()
{
    session->do_some();
}
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535728
Артем_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivGorloPavel,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
const Session *session;

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

void myFunc()
{
    session->do_some();
}
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535834
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем_84,

И что, что const Session? Указатель-то не const.
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535881
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У автора было:

Код: plaintext
1.
2.
Session *session;
void setSession(const Session *session);



Поскольку указатель на const нельзя присваивать указателю на НЕ-const, то я заменил
тип указателя, добавив туда const.

Код: plaintext
1.
2.
const Session *session;
void setSession(const Session *session);



Можно сделать изменение в обратную сторону:

Код: plaintext
1.
2.
3.
4.
5.
6.
Session *session;

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



Поскольку основная суть вопроса была, я считаю, не в этом, то я вообще не понимаю, что тут обсуждать.
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535919
Артем_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. эту переменную можно изменить ?

Код: plaintext
1.
const Session *session;



жесть, а не язык...
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38535941
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем_84Т.е. эту переменную можно изменить ?

Код: plaintext
1.
const Session *session;





Да, эту переменную можно изменить.
Нельзя изменить то значение, на которое она указывает.

Ты что, совсем не знаешь ничего что ли ? Азы же.
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38536083
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТы что, совсем не знаешь ничего что ли ? Азы же.
Когда это полное незнание обсуждаемой темы останавливало от бескомпромисных комментариев по ней :)
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38536141
Артемкин  С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivАртем_84Т.е. эту переменную можно изменить ?

Код: plaintext
1.
const Session *session;





Да, эту переменную можно изменить.
Нельзя изменить то значение, на которое она указывает.

Ты что, совсем не знаешь ничего что ли ? Азы же. именно этого не знал . спасибо
но ведь это както неоднозначно, Вам не кажется? константа != можно менять
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38536148
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемкин Сно ведь это както неоднозначно, Вам не кажется?
Нет.
Код: sql
1.
const Session * session;


и
Код: sql
1.
Session * const session;


- две большие разницы.
Код: sql
1.
const Session * const session;


это вообще отдельная песня.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38536198
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А именно:

Код: sql
1.
const Session * session;



Нельзя менять сам Session, а указатель на него (переменную session) -- можно.

Код: sql
1.
Session * const session = getSession();



Нельзя менять переменную session, нельзя этот указатель пересослать на другую Session, а сам Session можно менять.

Код: sql
1.
const Session * const session = getSession();



Нельзя менять ни сам Session, ни указатель на него (переменную session).

Код: sql
1.
Session * session;



Можно менять и сам Session, и указатель на него (переменную session).
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38537172
Mad Pilot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Непонятно только, что делали "ссылки" в исходном вопросе :)

А то ведь можно и так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class MyClass {
     Session *the_session;
public:
     // ...

     void SetSession(Session &sess)
     {
          the_session = &sess;
     }

     void MyFunc()
     {
          the_session->DoSomethingStupid();
     }
};



А для особых и истинных ценителей ещё и вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
class MyClass {
     Session &session;
public:
     MyClass(Session &sess) : session(sess) {}
     void MyFunc()
     {
          the_session->DoSomethingStupid();
     }
};


(но тут уж без конструктора никак, ибо ссылку присвоить нельзя, можно только ининциализировать)
...
Рейтинг: 0 / 0
Вопрос по указателям и ссылкам
    #38537336
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad PilotА для особых и истинных ценителей ещё и вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
class MyClass {
     Session &session;
public:
     MyClass(Session &sess) : session(sess) {}
     void MyFunc()
     {
          the_session->DoSomethingStupid();
     }
};



(но тут уж без конструктора никак, ибо ссылку присвоить нельзя, можно только ининциализировать)
Я только так и делаю, потому что если у вас есть указатель, то через полгода кто-то обязательно забудет что его надо инициализировать, и все сломается в рантайме и в самый неподходящий момент.
А ссылка сломается уже при компиляции :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по указателям и ссылкам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]