【发布时间】:2014-10-09 17:40:57
【问题描述】:
例如:
class Foo{
int data;
// ...
}
还有一个成员函数:
Foo func(int a){
if(a > 10) return Foo(a);
else {} // problem is here, I do not want return
any Foo object, do I throw exception? how?
}
所以,我不想在 else 块中返回一个新的空 Foo 对象,我该如何以惯用的方式处理这种情况?
【问题讨论】:
-
抛出异常?有什么问题?
-
你是怎么调用这个函数的?如果 a 小于 10,调用者期望什么?
-
在这种情况下,我还考虑返回一个指向新 Foo 对象的指针,如果 a > 10 为假,则返回 nullptr。尽管异常可能会强化这样一个事实,即您认为您的函数不应该支持这种情况。
-
Stephane 是对的,指针工作得很好,但我确实想返回对象,如果 a 调用者什么也不期望