Методы в классе
- Войдите на сайт для отправки комментариев
Не очень силен в C++, просветите. Допустимо использовать в классе два метода с одинаковыми именами, но разными возвращаемыми значениями. Например
class Timer_P
{
private:
boolean TimerRun;
public:
Timer_P();
void Timer(boolean Condition, boolean Reset,int Mode, long Duration);
boolean Timer(boolean Condition, boolean Reset,int Mode, long Duration);
};
void Timer_P::Timer(boolean Condition, boolean Reset, int Mode, long Duration)
....
....= this->TimerOut;
}
boolean Timer_P::Timer(boolean Condition, boolean Reset, int Mode, long Duration)
{
this->Timer_P::Timer(Condition, Reset, Mode, Duration);
return this->TimerOut;
}
Компилятор выдает ошибку:
In file included from TimerP_Test.ino:2:
E:\Документы\Arduino\libraries\X-Dron_lib/Timer_P.h:26: error: 'boolean Timer_P::Timer(boolean, boolean, int, long int)' cannot be overloaded
E:\Документы\Arduino\libraries\X-Dron_lib/Timer_P.h:25: error: with 'void Timer_P::Timer(boolean, boolean, int, long int)'
TimerP_Test.ino: In function 'void loop()':
Но при этом создавать методы с одним и тем же именем, но разными наборами аргументов - вполне стандартный прием.
Разобрался, низя
Перегруженные функции не обязаны возвращать значения одинакового типа по той причине, что компилятор однозначно идентифицирует функцию по ее имени и набору ее аргументов. Для компилятора функции с одинаковыми именами, но различными типами аргументов — разные функции, поэтому тип возвращаемого значения — прерогатива каждой функции. — Прим.перев.
http://programmersclub.ru/13/