#include
#include
#include
using namespace std;
class CMyClass
{
public:
CMyClass(){}
CMyClass(int a)
{
this->m_nValue = a;
vec.push_back(*this);
}
~CMyClass()
{
/*不知道怎么指向当前类*/
vector::iterator it;
for (it = vec.begin(); it != vec.end(); it++)
{
if (it->vec == *this)
vec.erase(it);
}
//int length = vec.size();
//for (int i = 0; i < length; i++)
//{
// if (&vec[i] == this)
// {
// CMyClass temp = vec[i];
//
// }
/* }*/
//for (it=vec.begin(); it != vec.end(); it++)
//{
// if (vec[])
// vec.erase(it);
//}
//cout << "delete d" << endl;
}
friend bool operator==(vector<CMyClass>v, CMyClass& c2)
{
int length = v.size();
for (int i = 0; i < length; i++)
{
if (&v[i] == &c2)
return true;
}
return false;
}
friend ostream& operator<<(ostream& out, CMyClass& c)
{
out << c.m_nValue << endl;
return out;
}
static void ShowList()
{
vector<CMyClass>::iterator it;
for (it = vec.begin(); it != vec.end(); it++)
{
cout << *it;
}
}
private:
int m_nValue;
static vectorvec;
};
vectorCMyClass::vec;
int main()
{
CMyClass a(100);
CMyClass b(1);
CMyClass c;
CMyClass* d = new CMyClass;
*d = 10;
cout << "The first end:" << endl;
CMyClass::ShowList();
if (1)
{
CMyClass e(1000);
cout << "The second end:" << endl;
CMyClass::ShowList();
}
delete d;
cout << "The third end:" << endl;
CMyClass::ShowList();
return 0;
}
类里的vector类型静态成员变量,目的是创建新对象时把它加入到容器中,析构时反之 现在出现overflow的问题