Методы в классе

X-Dron
Offline
Зарегистрирован: 24.01.2015

Не очень силен в 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()':

Но при этом создавать методы с одним и тем же именем, но разными наборами аргументов -  вполне стандартный прием.

X-Dron
Offline
Зарегистрирован: 24.01.2015

Разобрался, низя

Перегруженные функции не обязаны возвращать значения одинакового типа по той причине, что компилятор однозначно идентифицирует функцию по ее имени и набору ее аргументов. Для компилятора функции с одинаковыми именами, но различными типами аргументов — разные функции, поэтому тип возвращаемого значения — прерогатива каждой функции. — Прим.перев.

http://programmersclub.ru/13/