если вы настаиваете на возврате ссылки, у вас должен быть объект для ссылки; поэтому где-то в вашем примере у вас должен быть объект QString, и нет никакого способа обойти его.
Однако метод, который кажется подходящим для вашего случая, состоит в том, чтобы изменить ваш метод для принятия идентификатора по умолчанию для возврата в случае, если индекс выходит за пределы диапазона:
const QString& MyClass::getID( int i, const QString& default ) const
{
if( i < myArraySize && myArray[i] )
return myArray[i]->id;
else
return default;
}
Вы также можете выдать исключение, если индекс выходит за пределы диапазона, тогда вам не нужно возвращаться при сбое, но это, вероятно, не то, что вы хотите.