C++刚入门 不太会,请各位大神帮忙查一下这个错误是为什么,真的万分感谢!!!
设计一个CMyClass,它仅包含一个int类型的成员变量m_nValue,该类能够自动实现记录添加新类到Vector容器中,不需要类的用户再做任何特别处理的情况下,实现用一个简单的容器中存储一个类的所有实例。
最终程序的正确输出结果应该是:
The first end:
100
1
0
10
The second end:
100
1
0
10
1000
The third end:
100
1
0
#include "pch.h"
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
class CMyClass
{
public:
int m_nValue;
public:
static vector<CMyClass>member;
CMyClass();
CMyClass(int value);
~CMyClass();
static void ShowList();
friend ostream & operator<<(ostream & output, const CMyClass & temp);
};
std::vector<CMyClass> CMyClass::member;
CMyClass::CMyClass()
{
m_nValue = 0;
member.push_back(*this);
}
CMyClass::CMyClass(int value)
{
m_nValue = value;
member.push_back(*this);
}
CMyClass::~CMyClass()
{
member.pop_back();
}
void CMyClass::ShowList()
{
//vector<CMyClass>::iterator it;
//for (it = member.begin(); it != member.end(); it++);
for(int i=0;i<member.size();i++)
{
cout << member.at(i) << endl;
}
}
ostream & operator<<(ostream & output, const CMyClass & temp)
{
output << temp.m_nValue;
return output;
}
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;
}