İşaretçi aritmetiğinin boş göstericiler için izin verilmediğini biliyorum. Ama şöyle bir şey olduğunu hayal et:
class MyArray {
int *arrayBegin; // pointer to the first array item, NULL for an empty array
unsigned arraySize; // size of the array, zero for an empty array
public:
int *begin() const { return arrayBegin; }
int *end() const { return arrayBegin + arraySize; } // possible? (arrayBegin may be null)
Yukarıdaki end()
uygulamaya sahip olmak mümkün mü (izin veriliyor) ? Yoksa aşağıdakilere sahip olmak gerekli mi:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
arrayBegin
boş bir dizi için null olduğundan ( arraySize
bu durumda da sıfır olmasına rağmen) nullptr ile işaretçi aritmetiği önlemek için ?
Bunun int *end;
yerine saklamanın mümkün olduğunu biliyorum unsigned size;
ve boyut olarak hesaplanmasına izin verdim end-begin
- ama sonra aynı sorun geliyor: Hesaplamaya izin veriliyor nullptr - nullptr
mu?
Özellikle standart referansları takdir ediyorum.