问题描述
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++ 方法是例外,但我不喜欢它们,我想根据某些情况建议其他方法:
- 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 };
}
};
- 好的,我们得到了返回值状态,但如果失败,如何找到原因?:在这种情况下,我们可以创建一个
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" };
}
};