如果失败,如何返回const QString引用?

moa*_*ala 8 c++ qt const-reference

考虑以下代码:

const QString& MyClass::getID(int index) const
{
    if (i < myArraySize && myArray[i]) {
        return myArray[i]->id; // id is a QString
    } else {
        return my_global_empty_qstring; // is a global empty QString
    }
}
Run Code Online (Sandbox Code Playgroud)

如何不更改方法的返回类型的情况下避免使用空QString?(似乎返回在堆栈上分配的空QString是一个坏主意)

谢谢.

Ton*_*vel 8

你不能.要么不返回const引用,要么使用像这样的本地静态变量:

const QString& MyClass::getID(int index) const {
    if (i < myArraySize && (myArray[i] != 0)) {
        return myArray[i]->id; // id is a QString
    }

    static const QString emptyString;
    return emptyString;
}
Run Code Online (Sandbox Code Playgroud)

该方法优于其他提出的方法的优点是该解决方案不需要改变界面MyClass.此外,使用默认参数可能会使您的类的用户感到困惑并导致错误的类使用.该解决方案对用户是透明的.

顺便问一下,你真的在​​课堂上使用C风格的数组吗?