qq_34378013 2018-12-31 10:27 采纳率: 14.3%
浏览 410

如何实现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条回答 默认 最新

  • threenewbee 2018-12-31 15:46
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样