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

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

Войти
Регистрация
Восстановить пароль
 
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
#1

Можно ли получить ссылку на экземпляр класса по полю этого экземпляра - C++

23.11.2012, 00:26. Просмотров 514. Ответов 5
Метки нет (Все метки)

схематично код такой -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A
{
   static void staticMethodA(SomeClass* memberA);
   SomeClass* memberA;
   
}
void staticMethodA(SomeClass* memberA)
{
   B::staticMethodB(?????); // вот тут собственно вопрос
}
 
class B
{
  static void staticMethodB(A* instanceOf_A_class);
}
staticMethodB получает ссылку экземпляра класса A, можно ли как-нибудь получить ссылку на экземпляр A если есть ссылка на поле экземпляра A при вызове staticMethodA

может есть какой-то общеизвестный стандартный способ?

ПС- я не псих) просто работаю с чужим кодом и доступа к реализации нету

Добавлено через 7 минут
спасибо всем кто глянул, в библиотеке нашелся метод который как раз это и делает

вопрос снят
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 00:26     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра
Посмотрите здесь:

Написать класс, от которого можно получить только один экземпляр класса C++
C++ Сложение экземпляра базового класса и экземпляра наследника
C++ Может ли метод класса возвращать экземпляр этого же класса?
C++ Как создать экземпляр этого класса?
C++ Как передать в метод класса ссылку на экземпляр
Как сделать членом класса экземпляр этого же класса C++
C++ Создание нового экземпляра дочернего класса из экземпляра базового
Можно ли удалить объект экземпляра класса из самого себя? C++
C++ Компилятор требует конструктор, принимающий аргументом экземпляр того же класса (не ссылку)
C++ При создании экземпляра класса, создается 2 экземпляра вместо 1
C++ Создать экземпляр класса по ссылке экземпляра класса
Как сделать указатель/ссылку на метод конкретного экземпляра класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
28.11.2012, 22:42  [ТС]     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #2
Опять сталкнулся с этой же проблемой, на этот раз библиотека не спасает

Так что возобновляю свой вопрос

Можно ли получить ссылку на экземпляр класса если известна ссылка на поле этого экземпляра?

Заранее спасибо
ValeryS
Модератор
6512 / 4978 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
28.11.2012, 22:56     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #3
Цитата Сообщение от stan98 Посмотреть сообщение
staticMethodB получает ссылку экземпляра класса A, можно ли как-нибудь получить ссылку на экземпляр A если есть ссылка на поле экземпляра A при вызове staticMethodA
что то я ничего не понял
но могу сказать что статическая функция ничего не знает про экземпляры класса (это грубо говоря глобальная функция)
и вот так вот не пойдет
C++
1
2
3
4
5
6
class A
{
 int b;
public:
 static void fncSt(){ b=5;};
}
поскольку она не знает кто такой b к какому экземпляру он принадлежит и где он в памяти находится
для простых функций этот вопрос снимается потому что ей передается неявный параметр this, а статику он не передается,посему его нужно передать явно
например так
C++
1
2
3
4
5
6
class A
{
 int b;
public:
 static void fncSt(A* aa){aa-> b=5;};
}
вызывать например так
C++
1
2
A aaa;
A:: fncSt(&aaa)
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
28.11.2012, 23:09  [ТС]     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #4
Ситуация примерно следующая -

SomeClass* memberA; - это обьект представляет что то типо кнопки, указано memberA для простоты - SomeClass мможет быть полем любого класса(которому например и нужна эта кнопка)

void staticMethodA(SomeClass* memberA) - это обработчик нажатия(что то типо слушателя), то есть приходит только тот обьект который был нажат, о экземпляре его содержащем я ничего не знаю

static void staticMethodB(A* instanceOf_A_class); - а здесь выполняется логика обработки, для каждого класса своя - поэтому нужно передать именно класс который и содержит нажатую кнопку

изменить поведение я не могу - работаю с библиотекой и к реализации доступа нету

вот и здеваюсь как могу)
ValeryS
Модератор
6512 / 4978 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
28.11.2012, 23:55     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #5
Цитата Сообщение от stan98 Посмотреть сообщение
void staticMethodA(SomeClass* memberA) - это обработчик нажатия(что то типо слушателя), то есть приходит только тот обьект который был нажат, о экземпляре его содержащем я ничего не знаю
если на каждый объект своя то это не похоже на статик

Цитата Сообщение от stan98 Посмотреть сообщение
изменить поведение я не могу - работаю с библиотекой
ну а документация к этой библиотеке есть???
может обвязку какую сделать?


Цитата Сообщение от stan98 Посмотреть сообщение
к реализации доступа нету
ну дизасемблер то никто не отменял, вскрой и посмотри как все устроено
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
29.11.2012, 00:01  [ТС]     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #6
есть решение на примете, но оно не совсем "элегантное")

я надеялся что есть какие-нибудь общеизвестные способы, или может паттерн какой может помоч
Yandex
Объявления
29.11.2012, 00:01     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра
Ответ Создать тему
Опции темы

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