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

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

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

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

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

C++ Найти наибольший общий делитель всех элементов массива
Найти наибольший общий делитель всех элементов массива C++
создание классов C++
Создание классов C++
Как связать несколько классов через один общий класс? C++
C++ Создание классов
Создание *.dll: для чего нужен компилятору параметр -DBUILD_DLL? (использую MinGW) C++
Наследование классов - не передается нужный параметр C++
Выделение памяти по известному адресу C++
C++ Необходим общий private static-член для всех классов, сгенерированных по шаблону
Почему при выводе указателя получаем для char - значение по адресу, а для других типов - адрес C++
Вывести наибольший общий делитель всех элементов заданной последовательности целых чисел C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6345 / 2992 / 294
Регистрация: 04.12.2011
Сообщений: 8,022
Записей в блоге: 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
589 / 265 / 12
Регистрация: 31.03.2013
Сообщений: 1,324
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++
6547 / 3967 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2014, 23:08     Общий параметр для всех классов и создание объекта по известному адресу #6
Цитата Сообщение от kordax Посмотреть сообщение
Как создать объект в заранее нужном адресе памяти и как узнать
placement new

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

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