Вернуть несколько значений

Я Java-разработчик, который пытается кодировать C++ в ограниченной среде Arduino. Исключения и динамические объекты недоступны или их следует избегать из-за ограничений памяти.

Моя задача: создать метод, который анализирует символьный буфер (шестнадцатеричный полубайт) и возвращает логическое значение, указывающее на успех, а также на фактический результат. Моя попытка до сих пор (не связанные вещи избегаются):

class Parser {
   unsigned char buffer[SIZE];
   unsigned char index;

   void parse();
   bool parseHexNibble(unsigned char &result);
};

void Parser::parse() {
  unsigned char result = 0;
  if (!parseHexNibble(result)) {
    return;
  }

  // do some work with result
}

bool Parser::parseHexNibble(unsigned char &result) {
  unsigned char chr = buffer[index];
  if (chr >= '0' && chr <= '9') {
    result = chr - '0';
  }
  else if (chr >= 'A' && chr <= 'F') {
    result = chr - 'A' + 10;
  }
  else {
    return false;
  }

  index++;
  return true;
}

Будет ли это работать? Я не уверен, когда использовать *и когда использовать &. Есть ли лучшее решение?

0
задан Mot 31 May 2012 в 19:56
поделиться