如何处理从 getter 方法返回的错误?

How can I handle returning an error from a getter method?

我想知道在这种情况下如何 return 来自 getter 方法的错误?

class A 
{
private:
  int a;
  int b;
public:
  const int& get(int i) 
  {
    if (i == 1) return a;
    else if (i == 2) return b;
    // else... what to do here? I get a warning if I don't put anything.
  }
};

注意:你不需要return一个const int&给你的会员class,int就足够了.

C++ 方法是异常,但我不喜欢它们,我想根据某些情况建议一些其他方法:

  1. Getter函数必须做一些运算,然后return得到结果;在这种情况下,我们可以 return 一个布尔类型的 std::pair<boo, Type_Of_Result> 表示“这是一个成功的操作?”:
class A {
 private:
  int  m_value;

 public:
  A(const int value):
    m_value(value) {
  }

  template<typename T>
  using return_t = std::pair<bool, T>;

  return_t<int>  get() const {
    return { true, m_value };
  }
};
  1. 好的,我们得到了 return 值状态,但是如果它失败了,如何找到原因?:在这种情况下,我们可以创建一个 Result class 来处理错误消息和 return 值:
template <typename T>
struct Result {
  T return_value;
  bool its_okay;
  std::string message;
};

class A {
  // ...

  Result<int>  get() const {
    return { m_value, true, "All right" };
  }
};