![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Paspartu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Доброго времени суток!
Вот получил такую задачу: //******************************************************************************************************* Есть классы C1, С2, С3..... СN с функциями F1, F2, F3, ..... , FN Прототипы функций могут быть разными(максимальный набор параметров = 2 штуки, типы параметров неизвестны) Задача: 1. Организовать контейнер, элементами которого будут пары: один из экземпляров класса Cx и одна из функций Fx 2. Написать цикл, который пробегается по элементам контейнера и вызывает нужные методы (параметры этих функций задаются на этапе добавления объекта в контейнер) соответствующих экземпляров класса Ограничения: Нельзя использовать bost, qt, можно только stl Метод четкого вызова функций путем case, if - применять нельзя Напрямую рассчитывать адрес вызываемой функции нельзя Дополнение: Использует один человек, разрабатывает контейнер другой человек (он ничего не знает ни о классах C ни о возможном количестве функций F и их параметров) //******************************************************************************************************* Помогите, перевести ее на русский язык… 1. Не могу понять функции F1, F2, F3, ..... , FN это члены класса или как? Просто мне интересно, как ее помете вы… |
|||
|
||||
Paspartu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
1. Организовать контейнер, элементами которого будут пары: один из экземпляров класса Cx и одна из функций Fx
- вроде Fx - не является членном класса, НО! 2. Написать цикл, который пробегается по элементам контейнера и вызывает нужные методы (параметры этих функций задаются на этапе добавления объекта в контейнер) соответствующих экземпляров класса - если опустить то что в скобках получаем: Написать цикл, который пробегается по элементам контейнера и вызывает нужные методы соответствующих экземпляров класса - выходит что они являются членнами класса! Или я туплю... |
|||
|
||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
если речь о С++0х, то там в stl есть function и bind
если речь о С++98, то пишем их сами Добавлено @ 22:09
Это сообщение отредактировал(а) Abyx - 18.6.2010, 22:10 |
|||
|
||||
Paspartu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Abyx, спасибо, но у тебя в результате получился вектор указателей, а исходя из условия задачи в векторе(контейнере) должен жить сам объект...
возможно ли запихнуть в вектор объекты разных классов? Или возможно ли инстанцировать вектор шаблоном? т.е. изночально создать некую шаблонную структуру в которой будет сам объект, указатель на его функцию и параметры, затем эту структуру запихивать в вектор? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Stl-контейнеры не могут хранить объекты типов, которые нельзя привести друг к другу.
Ключевым словом в задании является: "Организовать" (читай "создать", "разработать") контейнер ... P.S. IMHO тут ни boost ни Qt не помогут -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Это можно сделать сделав свой аналог std::list, элементами которого будут объекты шаблонного класса, наследника от базового элемента:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |