Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.11.2012, 00:26. Просмотров 547. Ответов 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 минут
спасибо всем кто глянул, в библиотеке нашелся метод который как раз это и делает

вопрос снят
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 00:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли получить ссылку на экземпляр класса по полю этого экземпляра (C++):

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса? - C++
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе, (напр., получив такой базовый объект...

Создать экземпляр класса по ссылке экземпляра класса - C++
Есть класс для обработки клиентов // Абстрактный class ClientProcessing { }; Я создаю от него наследника class...

Написать класс, от которого можно получить только один экземпляр класса - C++
Написать класс, от которого можно получить только один экземпляр класса. Как такое реализовать? Если использовать только статические члены...

Создание статической функции класса, которая принимает экземпляр этого же класса как объект - C++
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...

Как сделать членом класса экземпляр этого же класса - C++
class Operation { public: bool type; //true = operation, false = number char Operator; Operation L_Op; Operation R_Op; ...

Может ли метод класса возвращать экземпляр этого же класса? - C++
такой вопрос, реально что бы функция класса имела тип класса(возвращала класс), то есть типа так: class c1{ c1 f1(); } если да, то...

5
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
28.11.2012, 22:42  [ТС] #2
Опять сталкнулся с этой же проблемой, на этот раз библиотека не спасает

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

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

Заранее спасибо
0
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,182
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)
0
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); - а здесь выполняется логика обработки, для каждого класса своя - поэтому нужно передать именно класс который и содержит нажатую кнопку

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

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

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


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

я надеялся что есть какие-нибудь общеизвестные способы, или может паттерн какой может помоч
0
29.11.2012, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 00:01
Привет! Вот еще темы с ответами:

Как сделать указатель/ссылку на метод конкретного экземпляра класса - C++
Добрый день. Подскажите можно ли в c++ каким либо образом объявить указатель/ссылку на функцию конкретного экземпляра класса и вызвать ее...

Как создать экземпляр этого класса? - C++
#pragma once template<typename T> class fgFSM { public: fgFSM() : _time_in_cur_state(0.0f), _cur_state(-1) { }

Как передать в метод класса ссылку на экземпляр - C++
Есть класс class Class{ ... } Как передать в метод экземплер класса из которого вызывается этот метод? Пробывал так: class Class{ ...

Компилятор требует конструктор, принимающий аргументом экземпляр того же класса (не ссылку) - C++
Доброго времени суток. Проблема такова: имеется ряд нижеприведённых классов (для простоты всё, что навскидку не касается данной...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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