Manchmal, wenn ich in C++ programmieren möchte ich wünschte, es gäbe einen undefined
Wert für jede Variable so etwas wie Javascript !. Zum Beispiel, wenn ich einen Wert für out-of-bounds Element eines Arrays zurückkehrte, war es sinnvoll, eine undefined
statt werfen eine Ausnahme zurückzukehren, oder:Eine ungültige Referenz zurückgeben
template <typename T, int SIZE>
class MyArray
{
T arr[SIZE];
static T badref;
public:
T &operator[](int i)
{
if (i >=0 && i < SIZE)
return arr[i];
else
throw std::string("OUT-OF-BOUNDS"); // or: return badref; !!
}
};
Ein weiteres schmutziges (meiner Meinung nach) Die Option gibt eine Referenz einer vordefinierten Variable als ungültige Referenzvariable zurück. Ich weiß, dass wir null
oder etwas Ähnliches zu einer Referenzvariablen nicht zuweisen können.
Gibt es ein weiteres wohlgeformtes Muster, um eine Referenz zurückzugeben, bei der der Aufrufer den zurückgegebenen Wert herausfinden kann?
EDIT: Ich meine nicht ein pointer
Ja, es heißt ein Zeiger. Alternativ, 'boost :: optional. – chris
Machen Sie Ihr badref-Objekt mindestens so, dass es statisch ist, dann wird es in keinem MyArray, das Sie erstellen, Speicherplatz einnehmen. Aber ich stimme zu, es ist hässlich. In generischem Code wie diesem würde ich eher eine Ausnahme werfen – john
@john: Ja, ich habe es bearbeitet. – deepmax