আমার একটি ক্লাস রয়েছে যা লোকের একটি তালিকা উপস্থাপন করে।
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
আমি ক্লায়েন্টদের লোকদের ভেক্টর দিয়ে পুনরাবৃত্তি করতে দিতে চাই। আমার প্রথম চিন্তাটি সহজভাবে ছিল:
std::vector<People> & getPeople { return people; }
যাহোক, আমি ক্লায়েন্টের কাছে প্রয়োগের বিশদটি ফাঁস করতে চাই না । ভেক্টরটি সংশোধন করা হলে আমি কিছু নির্দিষ্ট আক্রমণকারী বজায় রাখতে চাই এবং যখন আমি প্রয়োগটি ফাঁস করি তখন আমি এই আক্রমণকারীদের উপর নিয়ন্ত্রণ হারাতে পারি।
ইন্টার্নালগুলি ফাঁস না করে পুনরাবৃত্তির অনুমতি দেওয়ার সর্বোত্তম উপায় কী?
begin()
এবং end()
বিপজ্জনক কারণ (1) এই ধরণেরগুলি হ'ল ভেক্টর পুনরাবৃত্তকারী (শ্রেণি) যা একজনকে অন্য ধারক যেমন স এর থেকে স্যুইচ করা থেকে বাধা দেয় set
। (২) যদি ভেক্টরটি সংশোধন করা হয় (যেমন উত্থিত বা কিছু আইটেম মুছে ফেলা হয়) তবে কিছু বা সমস্ত ভেক্টর পুনরায় অবৈধ করা যেতে পারে।