rub*_*nvb 4 c++ reference switch-statement
我知道返回临时引用是违法的,但这是我的问题:
const stringSet & Target::dirList( const dirType type ) const
{
switch( type )
{
case SOURCE_DIR:
return m_sourceDirs;
case HEADER_DIR:
return m_headerDirs;
case RESOURCE_DIR:
return m_resourceDirs;
default:
return stringSet(); // PROBLEM HERE!
}
}
Run Code Online (Sandbox Code Playgroud)
前三个选项返回对stringSet数据成员的const引用.我应该怎么做默认情况?如果我把它留下来,编译器(GCC -Wall -Wextra -pedantic)抱怨并且我不想要它,因为这些选项倾向于以最奇怪的方式抓住我的床设计选择:)
谢谢!
将默认设置保留为成员...并返回对它的引用.当然,如果默认情况在理论上是可行的.如果不是,抛出异常并且不返回任何内容.
default:
throw invalid_argument_exception();
Run Code Online (Sandbox Code Playgroud)