我的C ++标题包含一些代码片段,如下所示:
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
地图容器中没有找到任何条目(向量矢量)来摆脱
warning C4715: 'MyClass::IRChannelData' : not all control paths return a value.
答案 0 :(得分:3)
bool
,并通过“out”语义参数返回结果向量的地址,或答案 1 :(得分:0)
返回指针并返回0
,以防您找不到所需内容。
答案 2 :(得分:0)
当您将引用返回到某个内容时,您无法在该函数上声明一个空映射,然后将其返回。您可以做的是声明要返回MyClass::emptyReturnMap
的相同类型的MyClass std::vector<std::vector<unsigned short> >
中的变量,然后返回它。但如果您正在编辑它的内容(因为返回不是常量),您将不得不在每次通话时清除它。