Здравствуйте, Sm0ke, Вы писали:
S>Здравствуйте, solearis, Вы писали:
S>>Уважаемые, подскажите пожайлуста по такому вопросу,
S>>хотел бы реализовать метод который бы в зависимости от входного параметра
S>>(ну и дополнительной логики в нутри класса),
S>>возвращал бы разные типы данных..
S>>BOOL Class::GetValue(LPCTSTR lp)
S>>{
S>> ...
S>> return TRUE;
S>>}
S>>int Class::GetValue(LPCTSTR lp)
S>>{
S>> int n;
S>> ...
S>> ...
S>> return n;
S>>}
S>>LPCTSTR Class::GetValue(LPCTSTR lp)
S>>{
S>> ...
S>> return lp;
S>>}
S>>и т.д......
S>>Я так понял что перегружать метод таким образом нельзя,
S>>(т.е обязательно необходимы разные типы или колличество входящих параметров)
S>>поскажите плс. возможные способы решения.
S>>Спасибо!
S>Способ решения взят из книги modern c++ design
S>S>template <typename T>
S>struct Type2Type
S>{
S> typedef T OriginalType;
S>};
S>class some
S>{
S>public:
S> int do_some(some & other, Type2Type<int>)
S> {
S> return 0;
S> }
S> float do_some(some & other, Type2Type<float>)
S> {
S> return 0.0;
S> }
S> // или шаблон
S> template <typename ResultType>
S> ResultType do_some(some & other, Type2Type<ResultType>)
S> {
S> return T();
S> }
S>};
S>void fn_test()
S>{
S> some obj, obj2;
S> float f= obj.do_some(obj2, Type2Type<float>() );
S>}
S>
S>Перегрузка методов не должна отличаться только по типу результата.
S>т.е. везде добавляем ещё один параметр Type2Type<ResultType>
ага... спасибо! , сейчас попробую..