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

Общий параметр для всех классов и создание объекта по известному адресу - C++

Восстановить пароль Регистрация
 
kordax
 Аватар для kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
13.07.2014, 21:33     Общий параметр для всех классов и создание объекта по известному адресу #1
Разработайте и реализуйте класс counted_ptr<T>, владеющий указателем на
объект типа T, и указатель, подсчитывающий количество ссылок (переменная
типа int), общий для всех указателей, с подсчетом ссылок на один и тот же
объект типа T. Счетчик ссылок должен содержать количество указателей, ссылающихся на данный объект типа т. Конструктор класса counted_ptr должен размещать в свободной памяти объект типа T и счетчик ссылок. Присвойте объекту класса counted_ptr начальное значение типа T. После уничтожения последнего объекта класса countedptr для класса T его деструктор должен удалить объект класса T.
Предусмотрите в классе counted_ptr операции, позволяющие использовать его как указатель.
Вообщем есть задание.

Скажу сразу, вся реализация для меня понятна, за исключением одного момента.
Поидее, мне нужен счётчик, который будет знать, количество указателей на стандартный объект - например int, double и т.д.
Проблема в том, что мне нужно обойтись без паттерна Наблюдателя и я смог придумать лишь один из способов:

Создать объект счётчика по известному адресу в памяти, при этом, адрес будет неизменен, если неизменен адрес элемента, на который встаёт мой counted_ptr.

Тут сообственно вопрос:
Можно ли так сделать и как создать объект по нужному мне адресу памяти (тем более нужно узнать свободен ли он)?
Либо, пожалуйста, предложите что-нибудь поумнее, если у вас есть какой-нибудь простой паттерн на такой случай.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 21:33     Общий параметр для всех классов и создание объекта по известному адресу
Посмотрите здесь:

Как связать несколько классов через один общий класс? C++
Создание *.dll: для чего нужен компилятору параметр -DBUILD_DLL? (использую MinGW) C++
Наследование классов - не передается нужный параметр C++
C++ Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Выделение памяти по известному адресу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
13.07.2014, 21:47     Общий параметр для всех классов и создание объекта по известному адресу #2
Цитата Сообщение от kordax Посмотреть сообщение
без паттерна Наблюдателя
но если создаётся счётчик, то наблюдать всё равно придётся?
Цитата Сообщение от kordax Посмотреть сообщение
Создать объект счётчика по известному адресу в памяти
Где будете хранить адрес такого объекта для указателя ptr<> с определённым значением (обекта ptr)? Если в самом объекте ptr, то не лучше ли счётчик разместить вместо этого?
kordax
 Аватар для kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
13.07.2014, 21:50  [ТС]     Общий параметр для всех классов и создание объекта по известному адресу #3
Если в самом объекте ptr, то не лучше ли счётчик разместить вместо этого?
Можете уточнить? К сожалению не понял что имели ввиду.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
13.07.2014, 22:58     Общий параметр для всех классов и создание объекта по известному адресу #4
наблюдатели? зачем тут наблюдатели? я так понял нужен аналог shared_ptr'а, посмотри как он реализован
kordax
 Аватар для kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
13.07.2014, 23:03  [ТС]     Общий параметр для всех классов и создание объекта по известному адресу #5
На форуме тут кидали реализацию, вот ссылка (вдруг кто читает мой топик с похожим вопросом):
http://ideone.com/J3YYC4
Но там блин без шаблонов и свой объект делается, мне такого не нужно.

Тогда ещё вопрос остался из моих первых.
Как создать объект в заранее нужном адресе памяти и как узнать, свободен ли он?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2014, 23:08     Общий параметр для всех классов и создание объекта по известному адресу #6
Цитата Сообщение от kordax Посмотреть сообщение
Как создать объект в заранее нужном адресе памяти и как узнать
placement new

Цитата Сообщение от kordax Посмотреть сообщение
и как узнать, свободен ли он?
это уже ваша забота, знать адреса, размеры участков и их занятость/свободность
Yandex
Объявления
13.07.2014, 23:08     Общий параметр для всех классов и создание объекта по известному адресу
Ответ Создать тему
Опции темы

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