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

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

Войти
Регистрация
Восстановить пароль
 
kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
#1

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

13.07.2014, 21:33. Просмотров 409. Ответов 5
Метки нет (Все метки)

Разработайте и реализуйте класс 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     Общий параметр для всех классов и создание объекта по известному адресу
Посмотрите здесь:

Необходим общий private static-член для всех классов, сгенерированных по шаблону - C++
Здравствуйте! Мне необходим общий private static-член для всех классов, сгенерированных по шаблону, и при этом, не хочется засорять...

Выделение памяти по известному адресу - C++
Всем привет. Вопрос сообственно в заголовке темы. Как выделить память по нужному мне адресу, например: Я хочу выделить память n*...

Создание *.dll: для чего нужен компилятору параметр -DBUILD_DLL? (использую MinGW) - C++
Не, реально, зачем он? ...Друзья! Много где в инете вы найдёте как кропать dll-ки, например тут. обратите внимание на командную...

Наследование классов - не передается нужный параметр - C++
Доброе утро всем! Встала не с той ноги и тут еще с кодом неполадки. Интересует такой вопрос - есть код PentagramGenerator...

Как связать несколько классов через один общий класс? - C++
Здравствуйте. Есть несколько несвязанных классов, каждый из которых хранит указатель на один общий класс (посредник, устанавливается в...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6442 / 3081 / 306
Регистрация: 04.12.2011
Сообщений: 8,483
Записей в блоге: 4
13.07.2014, 21:47     Общий параметр для всех классов и создание объекта по известному адресу #2
Цитата Сообщение от kordax Посмотреть сообщение
без паттерна Наблюдателя
но если создаётся счётчик, то наблюдать всё равно придётся?
Цитата Сообщение от kordax Посмотреть сообщение
Создать объект счётчика по известному адресу в памяти
Где будете хранить адрес такого объекта для указателя ptr<> с определённым значением (обекта ptr)? Если в самом объекте ptr, то не лучше ли счётчик разместить вместо этого?
kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
13.07.2014, 21:50  [ТС]     Общий параметр для всех классов и создание объекта по известному адресу #3
Если в самом объекте ptr, то не лучше ли счётчик разместить вместо этого?
Можете уточнить? К сожалению не понял что имели ввиду.
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
13.07.2014, 22:58     Общий параметр для всех классов и создание объекта по известному адресу #4
наблюдатели? зачем тут наблюдатели? я так понял нужен аналог shared_ptr'а, посмотри как он реализован
kordax
4 / 4 / 1
Регистрация: 08.06.2014
Сообщений: 89
13.07.2014, 23:03  [ТС]     Общий параметр для всех классов и создание объекта по известному адресу #5
На форуме тут кидали реализацию, вот ссылка (вдруг кто читает мой топик с похожим вопросом):
http://ideone.com/J3YYC4
Но там блин без шаблонов и свой объект делается, мне такого не нужно.

Тогда ещё вопрос остался из моих первых.
Как создать объект в заранее нужном адресе памяти и как узнать, свободен ли он?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 23:08     Общий параметр для всех классов и создание объекта по известному адресу
Еще ссылки по теме:

Найти наибольший общий делитель всех элементов массива - C++
найти наибольший общий делитель всех элементов массива (на который они все делятся без остатка)

Найти наибольший общий делитель всех элементов массива - C++
Такая задача: Найти наибольший общий делитель всех элементов массива (на который они все делятся без остатка).

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу - C++
#include &lt;math.h&gt; const double eps = 0.001; ///&lt; желаемая точность /// N - размерность матрицы; A - матрица коэффициентов, F -...


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

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

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

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