vector<CParam<int> >, vector<CParam<double> > и т.д
Re[2]: Гетерогенный контейнер
От:
Аноним
Дата:
11.09.02 15:54
Оценка:
Здравствуйте Андрей, Вы писали:
А>>Вопрос: а как такое можно получить?
А>vector<CParam<int> >, vector<CParam<double> > и т.д
Ну этот вариант понятен и так, но это не то то надо:
Здравствуйте Аноним, Вы писали:
А>Здравствуйте Андрей, Вы писали:
А>>>Вопрос: а как такое можно получить?
А>>vector<CParam<int> >, vector<CParam<double> > и т.д А>Ну этот вариант понятен и так, но это не то то надо:
А>CParam<string> tmp1; А>CParam<int> tmp2
А>vector<Cparam> v1 А>v1.push_back(tmp1); А>v1.push_back(tmp2);
А>Т.е. я хочу добавлять в один контейнер переменные разных типов.
так не выйдет.
Можно попытаться породить все параметры от одного базового класса, и складывать в контейнер указатели на этот базовый класс.
Очевидный минус — надо заранее создатиь свой класс для каждого типа. Да и в дальнейшем при работе с такими параметрами придется определять конкретный тип с помощью rtti.
А>CParam<string> tmp1; А>CParam<int> tmp2
А>vector<Cparam> v1 А>v1.push_back(tmp1); А>v1.push_back(tmp2);
А>Т.е. я хочу добавлять в один контейнер переменные разных типов.
А на что будет указывать итератор в таком контейнере? на CParam<string> или на CParam<int> ??? и какой будет allocator ??? Срочно читать Страуструпа, часть II
ps
иль бросайся с мОста в реку, иль беги в библиотеку. (c) С.Маршак.
Здравствуйте, Вы писали:
>CParam<string> tmp1; >CParam<int> tmp2
>vector<Cparam> v1 >v1.push_back(tmp1); >v1.push_back(tmp2);
>Т.е. я хочу добавлять в один контейнер переменные разных типов.
А как ты планируешь потом работать с элементами этого контейнера?
<< J 1.0 alpha 4 >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[4]: Гетерогенный контейнер
От:
Аноним
Дата:
11.09.02 17:42
Оценка:
Здравствуйте Nemo, Вы писали:
> А>>CParam<string> tmp1; А>>CParam<int> tmp2
А>>vector<Cparam> v1 А>>v1.push_back(tmp1); А>>v1.push_back(tmp2);
А>>Т.е. я хочу добавлять в один контейнер переменные разных типов.
N>А на что будет указывать итератор в таком контейнере? на CParam<string> или на CParam<int> ??? и какой будет allocator ??? Срочно читать Страуструпа, часть II
На что он будет указывать — это науке неизвестно
Вопрос был задан исходя из того что была такая бибилиотека — BIDS (от Borland), так там таките
фокусы были возможны. Могу дать ссылку даже на книгу где это описывалось, но там был маааленький
пунктик -все объекты были порождены от общего предка, а в сам контейнер клались не сами объекты
а указатели на них. Давльнейший механизм думаю понятен.
Предложение Bell как раз в этом ключе.
Вот если бы был механизм "обобщенных указателей" — не знаю даже как назвать.
Указатель на шаблон...
В общем резюме — хотелось красиво, а получится как всегда
Здравствуйте Аноним, Вы писали:
А>Здравствуйте Андрей, Вы писали:
А>>>Вопрос: а как такое можно получить?
А>>vector<CParam<int> >, vector<CParam<double> > и т.д А>Ну этот вариант понятен и так, но это не то то надо:
А>CParam<string> tmp1; А>CParam<int> tmp2
А>vector<Cparam> v1 А>v1.push_back(tmp1); А>v1.push_back(tmp2);
А>Т.е. я хочу добавлять в один контейнер переменные разных типов.