【发布时间】:2011-11-21 06:35:33
【问题描述】:
我的 C++ 标头有一些代码 sn-ps,如下所示:
private:
std::map<std::string, std::vector<std::vector<unsigned short> > > m_usIRDataPool;
public:
std::vector<std::vector<unsigned short> >& IRChannelData(std::string sChannelName);
在其实现文件(.cpp)中,IRChannelData() 有如下定义:
std::vector<std::vector<unsigned short> >& MyClass::IRChannelData(std::string sChannelName)
{
std::map<std::string, std::vector<std::vector<unsigned short> > >::iterator it = m_usIRDataPool.find( sChannelName );
if ( it != m_usIRDataPool.end() )
{
return it->second;
}
// return ????; // How can I return?
}
那么,如果在m_usIRDataPool map 容器中没有找到条目(向量的向量)来摆脱,会返回什么
warning C4715: 'MyClass::IRChannelData' : not all control paths return a value.
【问题讨论】:
-
您是在问您应该返回什么?或者您是在问如果您不返回任何东西会返回什么?
-
@Ben:最后一句好像是前者。
-
如果该条目不存在,程序的其余部分应该做什么?它总是应该退出吗?或者如果它不存在,你应该创造一些东西吗?您返回的内容取决于您期望函数的调用者如何反应(它可能不会返回任何适当的异常)。