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

问题描述

我想知道在这种情况下如何从 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.
  }
};

解决方法

注意:您不需要将 const int& 返回给您的成员类,int 就足够了。

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

  1. Getter 函数必须做一些操作然后返回结果;在这种情况下,我们可以返回一个 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. 好的,我们得到了返回值状态,但如果失败,如何找到原因?:在这种情况下,我们可以创建一个 Result 类来处理错误消息和返回值:
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" };
  }
};