如何实现vector容器存储类但是提示Stack overflew?

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;
}

1个回答

CMyClass::~CMyClass()
{
//member.pop_back();
}
注释掉这一行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问