|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.01.2012, 23:02 | #1 |
Регистрация: 29.12.2011
Сообщений: 6
|
Динамический класс. С++
Доброго времени суток.
Нужно создать динамический класс для работы с массивами. Вопрос как его создать? В книгах Дейтела и Лафоре вопрос создания динамического класса не освещается. В инете, толком, информации не нашел. Буду рад любой помощи по этому вопросу. |
04.01.2012, 23:04 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
05.01.2012, 03:24 | #3 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
А что такое динамический класс?
Я нашёл пока такое определение: Цитата:
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
05.01.2012, 08:53 | #4 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
Ну бывает при объявлении
Код:
Код:
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. |
05.01.2012, 09:55 | #5 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Вы это сами придумали?
Что подразумевает ТС под "динамическим классом" остается загадкой
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
05.01.2012, 11:59 | #6 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Потому что сам по себе язык с++ является языком строгой статической типизации Поэтому, на с++ в чистом виде отсутствует рефлексия, и поэтому недоступны динамические классы. Динамический класс - это класс, у которого в рантайме можно изменять реализацию (добавлять/убавлять данные члены или данные-методы) Цитата:
На языке с++ применительно к классам оно имеет такое же значение, как применительно к функциям, переменным, или экземплярам классов. А именно: ограничивает видимость объекта (применительно к классу, объектом является исполняемый байт код методов класса) единицей трансляции. Что означает, что для static class каждая использующая его единица трансляции получит собственную копию исполняемого байт кода методов класса. Никакого отношения к "динамическим" классам этот класс памяти не имеет. /ps скорее всего ТС имел ввиду, что ему нужен обычный класс, реализующий работу с дин. массивами. Что-то типа вектора. |
||
05.01.2012, 13:30 | #7 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
ограничение видимости это одно, а генерация лишнего кода вообще другое, и статик никогда этого не делал. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
05.01.2012, 13:42 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
1. Создаём хэдер, в котором пишем функцию (реализацию, а не прототип) 2. Создаём две ед. трансляции, и инклюдим наш хэдэр в оба cpp 3. Компилируем. 4. Ошибка линкера. О боже! Тело функции уже определено! Что делать? Можно поставить ключик линкеру /force http://msdn.microsoft.com/en-us/library/70abkas3.aspx Можно сделать функцию статиком. Каждая единица трансляции получит собственную копию функции (именно исполняемого байт кода). Ругани о переопределении символа не будет. 5. С классами, переменными и тд - аналогично. Единица трансляции может изменить значение своей копии статик объекта. И это изменение не затронет объекты других ед. трансляции. /ps "лишний код" реально компилируется на этапе компиляции единиц трансляции. Но в целевой проект не входит. Потому что весь "лишний код" просто выбрасывается линкером, как и весь остальной неиспользованный хлам. Поэтому, конечно можно сказать, что по итогу все равно только одна версия туловища статик функции останется. Но "с точки зрения" единицы трансляции - она оперирует своей собственной копией функции. Последний раз редактировалось _Bers; 05.01.2012 в 13:53. |
|
05.01.2012, 13:55 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
и в итоге можно создать копию данных(хотя не вижу смысла, искл скрытие чего-то внутри модуля) и не байт-кода, С++ не Java/C#. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось MaTBeu; 05.01.2012 в 18:34. |
|
05.01.2012, 14:02 | #10 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Класс "динамический список" | МаргаритKа | Помощь студентам | 0 | 23.05.2011 01:08 |
Динамический массив | tony_vies | Помощь студентам | 0 | 20.02.2011 21:18 |
Описать класс-родитель и класс-потомок. Delphi 7 | Andrew_M | Помощь студентам | 0 | 15.01.2011 14:42 |
Динамический массив - или всё таки не динамический? | vedro-compota | Общие вопросы C/C++ | 30 | 10.12.2010 23:22 |
создать динамический Стек через класс шаблон | Petruha-nsk | Общие вопросы C/C++ | 1 | 08.11.2009 12:41 |