![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Как наследовать vector? И как установить тип по умолчанию
|
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 1 Всего: 39 |
ты хочешь унаследовать только для того чтобы установить тип по умолчанию? если да то это совсем не обязательно достаточно использовать так:
|
|||
|
||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
В общем мне нужно создать класс, содержащий динамический массив. А насчёт типа по умолчанию я имел в виду чтобы при создании объекта без явного указания типа, массив объявлялся бы как, например, double.
|
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Наследуй включением, а не классическим наследованием. Я так понял нужно нечто такое:
Но по-моему проще лучше самому написать тип vector ![]() |
|||
|
||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
То есть при обращении к элементам и методам обработки массива мне придётся кроме объекта и метода писать между ними ещё arr? Это же не только удобство теряется, но и портится вид кода. Проще чем подключить готовый? Сомневаюсь... А если меня полностью устраивает класс из стандартной библиотеки шаблонов, но мне нужно добавить 1-2 метода, как тогда быть? непонятно что плохого в дизайне. я так и подумал, но у меня что-то не получается ![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
зачем? Это будет противоречить принципу инкапсуляции данных ![]() ![]() |
|||
|
||||
ZufuS |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
В смысле чтобы, например, обращаться к элементам массива нужно написать
и так далее? если да, то чем тогда плохо наследование? |
||||
|
|||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Хотя бы синтаксически в функциях-членах оно выглядит не очень адекватно, если захочется использовать [] (а какой толк от вектора, если не использовать [] ![]()
вопрос 1 --- что за методы? наблюдение 2 --- функции-не члены никто не отменял. то есть
(таким образом можно добиться работы этих функци не только для вектора, но и от чего-то более-менее эквивалентного, например deque'а) Это сообщение отредактировал(а) Mayk - 7.4.2007, 19:50 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
ZufuS |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
В общем надо создать класс для полигона, который может иметь произвольное число точек, в нём будут функции, которые будут произвольно устанавливать точки, выводить на экран...0
Я пытаюсь сделать примерно так:
это что такое?
|
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
|
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Это придаст ясность кода. это очень красивые эквиваленты выражения arr[i]. Кстати. Ещё плохие новости по поводу наследования в паре с шаблонами. Если хочеться сэкономить несколько нажатий на кнопки, то наследования не подходит. Зачастую вместо arr.something придётся писать this->something. Если ты унаследуешь от std::vector<>, то ты НЕ СМОЖЕШЬ на корректном компиляторе использовать некоторые методы из вектора явным образом. В частности те, которые не принимают никаких аргументов, например size().
и придётся использовать this->size() . -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
ZufuS |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Ясно, спасибо, также буду очень благодарен тому, кто подскажет из-за чего не компилируется проект. (C++ Builder)
[C++ Error] Unit1.cpp(80): E2379 Statement missing ;
---- изменил имя класса - заработало. Это сообщение отредактировал(а) ZufuS - 7.4.2007, 22:47 Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |