ورود

View Full Version : حرفه ای: جلوگیری از ایجاد بیش از یک شی از هر کلاس



Marjan_Bala
چهارشنبه 20 آبان 1388, 20:43 عصر
با سلام


من میخوام با Visuall stdio 2005 C++‎ یه برنامه بنویسم که به کاربر اجازه نده از

هر کلاس بیش از یک شی ایجاد کنه و موقعی که میخواست دومین شی رو از کلاس

ایجاد کنه کاربرو مجبور کنه تا از همون شی اول استفاده کنه یا به عبارتی تنها یک

نمونه از یک کلاس وجود داشته باشد و هر کاربر مجبور به استفاده از همان نمونه

باشد.(باید با استفاده از اعضای static این امکان رو ایجاد کنم.)

راهی که من به نظرم میرسه اینه که یه متغیر static تعریف کنم که همه اشیا بهش

دسترسی داشته باشن و تو Constructor کلاس مقدار این متغیرو اضافه کنم و شرط

بذارم که اگه مقدارش کمتر از یک بود(یعنی تاحالا هیچ شیی از این کلاس تعریف نشده

بود) یکی به مقدار این متغیر اضافه کنه و شیو ایجاد کنه اما اگه بیشتر از یک بود

(یعنی شیی که میخواد ایجاد شه دومین شی باشه) یه پیغام بده و شیو ایجاد نکنه.

حالا برنامه من پیغامو چاپ میکنه ولی شیو باز ایجاد میکنه ، میخوام شی جدید ایجاد

نکنه.(نمیدونم تو Constructor چه شرطی باید بذارم)





class class Item



{



public:



Item();



static int m_counter;



};



int Item::m_counter = 0;



Item::Item()



{



if (m_counter<1)



m_counter++;



else



cout<<"Error!";



{


void main()


{


Item a;


اینجا مقدار این متغیر یکه(چون یه شی از این کلاس ایجاد شده)//cout<<Item::m_counter;


Item b;


//این شی نباید ایجاد بشه ولی ضمن چاپ پیغام این شیو ایجاد میکنه


}






من دیگه راه دیگه ای به ذهنم نمیرسه ، اصلا نمیدونم روشم درسته یا نه ؛ اگه میتونید کمکم کنید.


با تشکر

Nima_NF
چهارشنبه 20 آبان 1388, 22:03 عصر
کاری که شما می خواهید انجام دهید یک روش معروف در برنامه نویسی هست که به آن کلاس های Singleton می گویند.

قبلا به قدر کافی با مثال در لینک زیر توضیح داده شده است، مطالعه کنید:
http://www.barnamenevis.org/forum/showthread.php?p=663813