【发布时间】:2012-10-08 11:43:31
【问题描述】:
如何避免并非所有控制路径都在此处返回容器的事实:
enum Type {Int, String};
Container containerFactory(Type type)
{
switch(type)
{
case Int:
return Container (std::vector<int>());
case String:
return Container (std::vector<std::string>());
}
}
更新: 我在想我可以在这里抛出一个异常,但我不能对此进行单元测试,因为不可能将无效的类型传递给函数。
【问题讨论】:
-
返回一个空容器?也许某种特殊版本表明存在错误/无结果?如果没有
Container的声明,这有点难以分辨。 -
我总是会返回一个 *container 或 null,但也许这只是我:(
-
旁注:您不需要双括号或
break语句。 -
@Martin James 然后我需要更改很多代码以使用 boost::shared_ptr
而不是 Container 和 Container&。 -
@MarceloCantos - 也许一些代码完成已经把它们放进去。
标签: c++