При перегрузке функции (предоставляя более одной функции с одним и тем же именем в классе), вам нужно предоставить различный набор аргументов типов для каждой функции, например:
void cell::evolveE(Example type_){****some stuff****;}
void cell::evolveE(OtherExample size_){****some diff stuff****;}
Обратите внимание, что здесь одна функция принимает аргумент типа Example
, а другая - аргумент типа OtherExample
.Хотя вы предоставляете разные значения по умолчанию в функции, которую вы пытаетесь перегрузить, обе функции принимают один и тот же аргумент type , поэтому компилятор не может определить разницу между ними.
Вы можетеиспользуйте переключатель, хотя я бы предпочел if / else, потому что он менее подвержен ошибкам.
Если перечисление Example
действительно определяет тип вашего класса, вы можете использовать полиморфизм.Это очень элегантная особенность ООП.Тогда вы можете получить что-то вроде этого:
class cell
{
...
virtual void evolveE() = 0;
};
class E1cell : public cell
{
...
void evolveE()
{
// some stuff
}
};
class E2cell : public cell
{
...
void evolveE()
{
// some diff stuff
}
};