返回临时引用

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)抱怨并且我不想要它,因为这些选项倾向于以最奇怪的方式抓住我的床设计选择:)

谢谢!

Arm*_*yan 9

将默认设置保留为成员...并返回对它的引用.当然,如果默认情况在理论上是可行的.如果不是,抛出异常并且不返回任何内容.

default:
   throw invalid_argument_exception();
Run Code Online (Sandbox Code Playgroud)