如何处理从 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++ 方法是异常,但我不喜欢它们,我想根据某些情况建议一些其他方法:
- 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 };
}
};
- 好的,我们得到了 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" };
}
};
我想知道在这种情况下如何 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++ 方法是异常,但我不喜欢它们,我想根据某些情况建议一些其他方法:
- 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 };
}
};
- 好的,我们得到了 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" };
}
};