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

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

Восстановить пароль Регистрация
 
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
23.11.2012, 00:26     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра #1
схематично код такой -

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

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

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

Заранее спасибо
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
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
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
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     Можно ли получить ссылку на экземпляр класса по полю этого экземпляра
Ответ Создать тему
Опции темы

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