Почему компилятор не видит тип перечисления?

Делаю первое устройство на ардуино, и во время программирования возникла ошибка, якобы компилятор не видит что 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;
→ Ссылка