ehsan_faal
دوشنبه 08 تیر 1394, 06:20 صبح
سلام.
من برای اینکه از روی یک کلاس فقط بشه یه نمونه ساخت کد زیر رو نوشتم.
منتها نمیدونم چرا متد مخرب مدام تکرار میشه.ایراد کارم کجاست؟
#ifndef HANDY_H
#define HANDY_H
class Handy
{
int FakeData=0;
Handy();
static Handy* Instance;
public:
static Handy getInstance(void);
void Information(void);
~Handy();
};
#endif // HANDY_H
#include "Handy.h"
#include <iostream>
Handy* Handy::Instance=nullptr;
Handy::Handy()
{
using namespace std;
cout<<"Constructor Called."<<endl;
}
Handy::~Handy()
{
using namespace std;
cout<<"Destructor Called."<<endl;
delete Instance;
}
Handy Handy::getInstance(void)
{
if(Instance==nullptr)
{
Instance=new Handy;
return *Instance;
}
else
return *Instance;
}
void Handy::Information(void)
{
std::cout<<"blah blah blah..."<<std::endl;
}
#include <iostream>
#include "Handy.h"
using namespace std;
int main()
{
{
Handy Obj=Handy::getInstance();
Obj.getInstance();
Obj.Information();
}
system("pause");
return 0;
}
آیا اشکال توی تعریف متد مخربه؟(نباید حافظه اختصاص داده شده به نمونه رو delete کنم؟)
و سوال بعدیم هم اینه که توی مد دیباگ وقتی که اولین بار نمونه میسازم نمونه یه جورایی مثله لیست پیوندی میشه.(تصویر زیر)
در این مورد مشکل از چیه؟(خودم فکر میکنم این یه موردش درست باشه،چون یه متغیر استاتیک داریم اینجوری میشه دیگه،اینطور نیست؟)
132712
با تشکر
من برای اینکه از روی یک کلاس فقط بشه یه نمونه ساخت کد زیر رو نوشتم.
منتها نمیدونم چرا متد مخرب مدام تکرار میشه.ایراد کارم کجاست؟
#ifndef HANDY_H
#define HANDY_H
class Handy
{
int FakeData=0;
Handy();
static Handy* Instance;
public:
static Handy getInstance(void);
void Information(void);
~Handy();
};
#endif // HANDY_H
#include "Handy.h"
#include <iostream>
Handy* Handy::Instance=nullptr;
Handy::Handy()
{
using namespace std;
cout<<"Constructor Called."<<endl;
}
Handy::~Handy()
{
using namespace std;
cout<<"Destructor Called."<<endl;
delete Instance;
}
Handy Handy::getInstance(void)
{
if(Instance==nullptr)
{
Instance=new Handy;
return *Instance;
}
else
return *Instance;
}
void Handy::Information(void)
{
std::cout<<"blah blah blah..."<<std::endl;
}
#include <iostream>
#include "Handy.h"
using namespace std;
int main()
{
{
Handy Obj=Handy::getInstance();
Obj.getInstance();
Obj.Information();
}
system("pause");
return 0;
}
آیا اشکال توی تعریف متد مخربه؟(نباید حافظه اختصاص داده شده به نمونه رو delete کنم؟)
و سوال بعدیم هم اینه که توی مد دیباگ وقتی که اولین بار نمونه میسازم نمونه یه جورایی مثله لیست پیوندی میشه.(تصویر زیر)
در این مورد مشکل از چیه؟(خودم فکر میکنم این یه موردش درست باشه،چون یه متغیر استاتیک داریم اینجوری میشه دیگه،اینطور نیست؟)
132712
با تشکر