1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|
1 | |
Работа с классами (в главном классе создать указатель на экземпляр другого класса)07.09.2013, 16:05. Показов 4943. Ответов 20
Метки нет (Все метки)
Недавно начал изучение С++, в частности ООП. В связи с чем у меня есть вопрос как в главном классе можно создать указатель на экземпляр другого класса, причем такой, чтоб во всех экземплярах главного класса был один и тот же указатель. То есть существует много экземпляров главного класса, все указатели которого указывают на единственный экземпляр другого класса.
0
|
07.09.2013, 16:05 | |
Ответы с готовыми решениями:
20
Создать экземпляр одного класса в Main, и передать его в экземпляр другого класса Как создать указатель на экземпляр класса? Как создать экземпляр внутреннего класса в родительском классе Как правильно создать экземпляр класса в классе контроллере |
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
|
|
07.09.2013, 16:22 | 2 |
При создании каждого экземпляра "главного" класса передавать ему адрес того самого экземпляра.
0
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 28
|
||||||
07.09.2013, 16:27 | 3 | |||||
сделать его статическим
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
||||||
07.09.2013, 16:57 [ТС] | 4 | |||||
а как это реализовать
Дело в том, что когда я делаю обьект статическим компилятор начинает ругаться
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
07.09.2013, 17:39 | 5 | |||||
Teplotexnik, нужно определение B::ptr (в исходнике):
1
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|
07.09.2013, 18:11 [ТС] | 6 |
спасибо так работает, но хотелось бы попробовать не через статический указатель, а через создание в каждом объекте класса указателя на один объект класса, подскажите как сделать без статических определений.
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|||||||||||
07.09.2013, 18:16 | 7 | ||||||||||
Как то так:
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|||||||||||
07.09.2013, 19:02 [ТС] | 8 | ||||||||||
когда пытаюсь сделать так
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
07.09.2013, 19:13 | 9 |
Ну значит VS это не поддерживает, инициализируй в конструкторе.
Добавлено через 2 минуты Вот здесь работает, например: http://ideone.com/h5G0TO . Добавлено через 1 минуту
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|
07.09.2013, 19:22 [ТС] | 10 |
Да, тот код тоже не компилируется видимо это зависит от компилятора( а shared_ptr это класс, в котором содержится указатель на хранилище и колличество используемых в данный момент указателей на данное хранилище, когда не остается ни одного указателя хранилище должно разрушиться.
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
07.09.2013, 19:29 | 11 |
Что-то делаешь не так. Ошибки какие?
Я знаю, что такое shared_ptr; зачем нужен статический счётчик?
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
||||||
07.09.2013, 19:54 [ТС] | 12 | |||||
0
|
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
|||||||||||
07.09.2013, 19:57 | 13 | ||||||||||
агрегация по ссылке это называется. а чтобы "во всех экземплярах главного класса был один и тот же указатель" переменную-указатель надо сделать статической. статическая переменная является общей для всех объектов класса, к которому она относится. пример:
присвоить значение objectA можно, например, так:
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|
07.09.2013, 20:01 [ТС] | 14 |
gray_fox, этот счетчик нужен для подсчета колличества созданных указателей на хранилище
fit, вопрос был как отказаться от статического указателя, но при этом чтобы указатели всех экземпляров этого класса ссылались на единсвенный экземпляр класса хранилище
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
07.09.2013, 20:05 | 15 | |||||
Инициализируй в конструкторах
0
|
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
|
07.09.2013, 21:10 | 16 |
Сообщение от gray_fox
не понимаю чем автору не нравится статический указатель. он для таких целей и существует))
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
07.09.2013, 21:23 | 17 | |||||
я не знаю)
Добавлено через 4 минуты Т.е. видимо как то так:
0
|
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25
|
|
07.09.2013, 23:50 [ТС] | 18 |
потому что все статически определенные объекты и поля как глобальные переменные создаются самыми первыми и могут создаться до того, как будут определены
это какой то встроенный класс auto_ptr?
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
08.09.2013, 00:07 | 19 |
0
|
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
|
08.09.2013, 02:02 | 20 |
Сообщение от Teplotexnik
0
|
08.09.2013, 02:02 | |
08.09.2013, 02:02 | |
Помогаю со студенческими работами здесь
20
Создать экземпляр класса Graphics для метода в своём классе Работа с уже сконструированными классами из другого класса Создать в классе поле типа другого класса Как создать экземпляр класса внутри другого, явно не указывая его название Создать в главном классе метод генерации Обращение к методам класса через указатель на экземпляр класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |