আমি জানি যে পয়েন্টার গাণিতিক নাল পয়েন্টারগুলির জন্য অনুমোদিত নয়। তবে ভাবুন আমার এরকম কিছু রয়েছে:
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)
উপরোক্ত end()
বাস্তবায়ন কি সম্ভব (অনুমোদিত) ? বা এটি থাকা প্রয়োজন:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
নালপ্টারের সাথে পয়েন্টার গাণিতিকটি এড়াতে কারণ arrayBegin
খালি অ্যারের জন্য নাল (যদিও arraySize
এই ক্ষেত্রে শূন্য থাকা সত্ত্বেও )?
আমি জানি যে এটির int *end;
পরিবর্তে সঞ্চয় করা সম্ভব unsigned size;
এবং আকার হিসাবে গণনা করা যায় end-begin
- তবে একই সমস্যাটি আসে: এটি কি গণনা করার অনুমতি দেওয়া হয় nullptr - nullptr
?
আমি বিশেষভাবে স্ট্যান্ডার্ড রেফারেন্স প্রশংসা করব।