Почему компилятор не видит тип перечисления?
Делаю первое устройство на ардуино, и во время программирования возникла ошибка, якобы компилятор не видит что MathOperator это тип, хотя строчки выше, он это видит. У меня есть перечисление MathOperator и класс Calculator. У него есть приватное поле MathOperator _operator. Здесь всё нормально работает. Но если я добавлю публичный метод MathOperator getOperator(), то выводится ошибка:
error: 'MathOperator' does not name a type; did you mean 'operator+'?
Ломал голову, но всё таки не выяснил, что к чему. Надеюсь вы поможете. Фрагмент кода:
enum MathOperator
{
None, Add, Multiply, Divide
};
class Calculator
{
private:
int64_t _firstOperand = 0;
int64_t _secondOperand = 0;
MathOperator _operator;
public:
// -- Methods for working with operands --
int64_t getFirstOperand()
{
return this->_firstOperand;
}
int64_t getSecondOperand()
{
return this->_secondOperand;
}
void updateFirstOperand(int (*func)(int))
{
this->_firstOperand = func(_firstOperand);
}
// ---------------------------------------
// -- Methods for working with operator --
MathOperator getOperator()
{
return this->_operator;
}
// ---------------------------------------
String valueToString(int64_t number)
{
String str;
while (number > 0)
{
str = String((int32_t)(number % 10)) + str;
number /= 10;
}
return str;
}
void clear()
{
this->_firstOperand = 0;
this->_secondOperand = 0;
this->_operator = MathOperator::None;
}
};
Если публичный метод getOperator() закомментировать, то код скомпилируется.
Ответы (1 шт):
Автор решения: Vanyamba Electronics
→ Ссылка
На языке С++ должно быть так:
typedef enum {
None, Add, Multiply, Divide
} MathOperator;