| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > определить, есть ли у объекта конкретный метод |
| Автор: boostcoder 1.5.2011, 15:57 | ||||
| всем привет. пишу свою поделку сериализации. сериализацию POD`ов и STL типов реализовал. остался реализовать сериализацию пользовательских типов. т.е., сейчас пользователь для своего типа должен реализовать такое:
но такого способа недостаточно. т.к. возможно потребуется сериализация приватных свойств класса. для этого, нужно чтоб юзер в своем классе реализовал публичный метод serialize(). и это не проблема. проблема в том, как заставить сериализатор определять, есть ли этот метод у объекта, и если есть, вызвать его? т.е. в таком случае, user_type должен быть таким:
просьба не отсылать смотреть исходники boost.serialization. смотрел. запутался и ничего не понял. спасибо. |
| Автор: rudvil 1.5.2011, 16:14 |
| http://stackoverflow.com/questions/257288/is-it-possible-to-write-a-c-template-to-check-for-a-functions-existence/257382 Странно, на LWS не работает... http://liveworkspace.org/code/f620e0ce438c5e9f1a7880a962a10d77 хотя у меня на компе все ок, mingw-4.6.0 |
| Автор: boostcoder 1.5.2011, 17:03 |
| rudvil, спасибо. перешел по ссылке: http://www.rsdn.ru/forum/cpp/2759773.1.aspx просвещаюсь.. а почему код не работает, я не понимаю.. вроде бы все законно. |
| Автор: mes 1.5.2011, 17:08 |
так как typeof нестандартный оператор, и работает только при каких то там опциях... небольшое изменение и все компилится : http://liveworkspace.org/code/6c3ddb994de1bcfbf9cf34da757f33a9 |
| Автор: boostcoder 1.5.2011, 17:19 | ||
буду знать. и правда |
| Автор: boostcoder 2.5.2011, 13:22 | ||
конечный код:
http://liveworkspace.org/code/5f8fb487c260dad214dcaeed9db17305 всем спасибо. |
| Автор: mes 2.5.2011, 14:34 |
осталось задефайнить, чтоб легко можно было определять механизм проверки для нужного метода.. |
| Автор: boostcoder 2.5.2011, 14:49 |
ага. все таки, с++ забавный ЯП. главное что не унылый, т.к. постоянно что-то новое узнаешь... и так наверное без конца... не помню в какой книжке и какого автора, но он писал о том, что с++ не создавался для того чтоб при его использовании можно было писать метапрограммы. метапрограммирование в с++ _открыли_ позже. |
| Автор: mes 3.5.2011, 02:32 | ||
http://www.boost.org/doc/libs/1_31_0/libs/mpl/doc/paper/html/intro.html |