Здравствуйте, гость ( Вход | Регистрация )
Влад | Дата 30.7.2009, 17:18 |
Достаточно ли просто сделать propMap.clear(); ??? А зачем его делать? (То есть, делать тоже не возбраняется, конечно же...) При разрушении объекта твоего класса будет вызван деструктор члена propMap (который по сути std::map<>), а деструктор этого члена (== деструктор std::map<>) корректно очистит все, что нужно. |
|
BRE | Дата 30.7.2009, 17:08 |
Достаточно ли просто сделать propMap.clear(); ??? Да. |
|
igor_bogomolov | Дата 30.7.2009, 17:02 |
Вот что в результате получилось. инклюдники и определения
класс Property
объявление классов для тестирования
main
результат Цитата Property_t = 125 Property_t = string Property_t = 1.89 Для чего это нужно, думаю и так понятно. Что бы имея указатель только на базовый класс, получить доступ к любому методу порожденного от него класса. У меня еще остался вопрос, по поводу очистки памяти в деструкторе. Достаточно ли просто сделать propMap.clear(); ??? |
|
ViGOur | Дата 30.7.2009, 15:22 |
ЗЫ. Тему лучше перенести в boost. Перенес. |
|
AD | Дата 30.7.2009, 14:13 |
Осталось отвязаться от конкретных типов. Пока не понял что лучше использовать - boost::any или boost::variant ? Как обобщу, выложу готовый пример. Может еще кому пригодится Мне пригодиться. |
|
igor_bogomolov | Дата 30.7.2009, 14:12 |
BRE, спасибо огромнейшее. Все получилось. Осталось отвязаться от конкретных типов. Пока не понял что лучше использовать - boost::any или boost::variant ? Как обобщу, выложу готовый пример. Может еще кому пригодится ЗЫ. Тему лучше перенести в boost. |
|
BRE | Дата 30.7.2009, 13:50 |
Более подробный рабочий пример: Раскрывающийся текст
|
|
igor_bogomolov | Дата 30.7.2009, 13:33 |
cpp
вывод Цитата /usr/include/boost/bind/mem_fn.hpp: In member function ‘R& boost::_mfi:m<R, T>::operator()(T*) const [with R = bool ()(int), T = device]’: /usr/include/boost/bind/bind.hpp:236: instantiated from ‘R boost::_bi::list1<A1>::operator()(boost::_bi::type<R>, F&, A&, long int) [with R = bool (&)(int), F = boost::_mfi:m<bool ()(int), device>, A = boost::_bi::list1<int&>, A1 = boost::_bi::value<device*>]’ /usr/include/boost/bind/bind_template.hpp:32: instantiated from ‘typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()(A1&) [with A1 = int, R = bool (&)(int), F = boost::_mfi:m<bool ()(int), device>, L = boost::_bi::list1<boost::_bi::value<device*> >]’ /usr/include/boost/function/function_template.hpp:131: instantiated from ‘static R boost::detail::function::function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::function_buffer&, T0) [with FunctionObj = boost::_bi::bind_t<bool (&)(int), boost::_mfi:m<bool ()(int), device>, boost::_bi::list1<boost::_bi::value<device*> > >, R = bool, T0 = int]’ /usr/include/boost/function/function_template.hpp:904: instantiated from ‘void boost::function1<R, T1>::assign_to(Functor) [with Functor = boost::_bi::bind_t<bool (&)(int), boost::_mfi:m<bool ()(int), device>, boost::_bi::list1<boost::_bi::value<device*> > >, R = bool, T0 = int]’ /usr/include/boost/function/function_template.hpp:720: instantiated from ‘boost::function1<R, T1>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not::value, int>::type) [with Functor = boost::_bi::bind_t<bool (&)(int), boost::_mfi:m<bool ()(int), device>, boost::_bi::list1<boost::_bi::value<device*> > >, R = bool, T0 = int]’ /usr/include/boost/function/function_template.hpp:1040: instantiated from ‘boost::function<R ()(T0)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not::value, int>::type) [with Functor = boost::_bi::bind_t<bool (&)(int), boost::_mfi:m<bool ()(int), device>, boost::_bi::list1<boost::_bi::value<device*> > >, R = bool, T0 = int]’ main.cpp:129: instantiated from here /usr/include/boost/bind/mem_fn.hpp:342: error: invalid use of non-static member function Что я опять делаю не так ??? |
|
BRE | Дата 30.7.2009, 12:20 |
Набросаю прямо здесь небольшой пример:
|
|
Влад | Дата 30.7.2009, 12:16 |
Посмотри, например, вот на это: http://www.progz.ru/forum/index.php?showtopic=27073&st=0 | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 5:36 |