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;
//این شی نباید ایجاد بشه ولی ضمن چاپ پیغام این شیو ایجاد میکنه
}
من دیگه راه دیگه ای به ذهنم نمیرسه ، اصلا نمیدونم روشم درسته یا نه ؛ اگه میتونید کمکم کنید.
با تشکر
من میخوام با 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;
//این شی نباید ایجاد بشه ولی ضمن چاپ پیغام این شیو ایجاد میکنه
}
من دیگه راه دیگه ای به ذهنم نمیرسه ، اصلا نمیدونم روشم درسته یا نه ؛ اگه میتونید کمکم کنید.
با تشکر