Здравствуйте, 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>Спасибо!
Способ решения взят из книги modern c++ design
template <typename T>
struct Type2Type
{
typedef T OriginalType;
};
class some
{
public:
int do_some(some & other, Type2Type<int>)
{
return 0;
}
float do_some(some & other, Type2Type<float>)
{
return 0.0;
}
// или шаблон
template <typename ResultType>
ResultType do_some(some & other, Type2Type<ResultType>)
{
return T();
}
};
void fn_test()
{
some obj, obj2;
float f= obj.do_some(obj2, Type2Type<float>() );
}
Перегрузка методов не должна отличаться только по типу результата.
т.е. везде добавляем ещё один параметр Type2Type<ResultType>