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

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Указатель owner - C++

16.02.2012, 21:31. Просмотров 740. Ответов 3
Метки нет (Все метки)

Указатель this мне известен, но он указывает на сам объект, а мне надо на композит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
 class B
 {
 };
 B b1;
 B b2;
 ...
};
A a1;
A a2;
A *array;
Надо, чтоб B имел член
C++
1
A * owner;
, или
C++
1
A * owner();
. Причём,
C++
1
a1.b1.owner
и
C++
1
a1.b2.owner
должны указывать на
C++
1
a1
, а
C++
1
a2.b1.owner
и
C++
1
a2.b2.owner
- на
C++
1
a2
. И все
C++
1
array[i].b1.owner
и
C++
1
array[i].b2.owner
должны указывать на свои
C++
1
array[i]
. Желательно, чтоб они ещё и выдерживали
C++
1
realloc
. Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2012, 21:31     Указатель owner
Посмотрите здесь:

Указатель на указатель заполнение матрицы - C++
Напишите как самому вбивать матрицу скок на скока и каждый элемент в нем (заранее спасибо)!

Сделать указатель на указатель NULL - C++
есть код: class Matrix { private: double **data; //нужно, чтобы в самом начале это было NULL double *b; //и это тоже было NULL ...

Указатель на функцию возвращающую указатель - C++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

Указатель на указатель, класс группа - C++
помогите пожалуйста не могу понять что со строкой 312 знаю что с указателем что то не то... но исправить не получается //4. В...

Указатель на указатель - разница способов - C++
int a =5; int *b = &a; int **e =&b; //первый способ //Нужно писать столько * скока указателей.. int *f = b; //Втрой...

Указатель на указатель внутри структуры - C++
Приветствую. Есть 2 структуры: enum category { Technical, History, Fiction }; struct BOOK { char author; char name; int...

Указатель на указатель заполнение матрицы - C++
Помогите как самому вбивать матрицу скоко на скоко и элементы этой матрицы ( без функций ) используя только <iostream>. (помощь)

Преобразование в указатель на указатель на константу - C++
В упор не могу понять правила которые приводит Дьюхерст для преобразований "многоуровневых" указателей. (Дьюхерст "Скользкие места...

Зачем использовать Указатель на указатель? - C++
Подскажите зачем использовать Указатель на указатель? И как работают двумерные массивы за счет указателей?

Задача на указатели.Указатель на указатель. - C++
Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали равны 0, а...

Ссылка на указатель на указатель - C++
void TEST( int **&refptr, int const &N); int main() { int const N = 10; int i{ 0 }, b{ 2 }, *ptr{ &i, &b }; ...

Указатель на указатель на функцию - C++
Дан следующий код void f () {} void main() { void (**ppf) (); } Вопрос: какой код следует написать, чтобы...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,115
16.02.2012, 21:49     Указатель owner #2
Пиши этот указатель в конструкторе.
Цитата Сообщение от taras atavin Посмотреть сообщение
realloc
По определению не вызывает конструкторы/деструкторы.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
16.02.2012, 21:53     Указатель owner #3
сделай конструктор B(A* owner) и передавай туда указатель this
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.02.2012, 09:54  [ТС]     Указатель owner #4
Цитата Сообщение от NoMasters Посмотреть сообщение
По определению не вызывает конструкторы/деструкторы.
То есть перемещение композита он не выдержит?

Добавлено через 14 минут
Цитата Сообщение от OstapBender Посмотреть сообщение
сделай конструктор B(A* owner) и передавай туда указатель this
А как? Это обычные поля, у них нет static и они не выделяются по указателям.

Добавлено через 6 минут
Цитата Сообщение от NoMasters Посмотреть сообщение
По определению не вызывает конструкторы/деструкторы.
А ты обратил внимание на
Цитата Сообщение от taras atavin Посмотреть сообщение
или
C++
1
A * owner();
? b1 и b2 имеют фиксированные смещения от A::this. Но тогда и owner имеет постоянное для каждого объекта смещение от B::this. Предположим,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class B
{
 int OwnerOffset;
 B (A *owner)
 {
  OwnerOffset=((void *)this)-owner;
 }
 A * owner()
 {
  return (A *)(((void *)this)-OwnerOffset);
 }
 ...
};
Вроде должно выдержать любые перемещения композита.
Yandex
Объявления
17.02.2012, 09:54     Указатель owner
Ответ Создать тему
Опции темы

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