【发布时间】:2014-10-14 00:52:02
【问题描述】:
程序的基础是一个定义模板类miniMultiSet的头文件。该类使用列表结构作为多集的实现结构。该类通过实现定义的类方法在头文件中实现。
当我这样做时,我遇到了将信息从 main.cpp 发送到我的头文件的问题。没有错误消息,它只是冻结,我必须关闭它。这让我觉得我的内存管理有问题。
头文件:
#ifndef MINIMULTISET_H_INCLUDED
#define MINIMULTISET_H_INCLUDED
#include <list>
#include <set>
using namespace std;
template <typename T>
class miniMultiSet
{
public:
typedef typename list<T>::iterator iterator;
typedef typename list<T>::const_iterator const_iterator;
// miniMultiSet iterators are simply list iterators
miniMultiSet();
// default constructor
bool empty() const{return l.empty();}
// is the multiset empty?
int size() const{return l.size();}
// return the number of elements in the multiset
iterator insert(const T& item)
{
l.insert(l.end(), item);
return l.end();
}
// insert item into multi set and return an
// iterator pointing at the new element.
private:
list<T> l;
// multiset implemented using a list
};
#endif // MINIMULTISET_H_INCLUDED
main.cpp ///////////////////////////////////// //
#include <iostream>
#include <list>
#include <set>
#include <algorithm>
#include "miniMultiSet.h"
using namespace std;
int main()
{
miniMultiSet<int> *A;
A=0;
*A->insert(90);
cout << A->size() << endl;
if(A->empty())
cout << "Set is empty." << endl;
else
cout << "Set contains data." << endl;
return 0;
}
我构建它并且没有错误声明。当我运行它时,我得到“程序已停止工作,正在寻找解决方案。”。然后它结束程序,我得到“进程返回 -1073741819 (0xC0000005) 执行时间:4.421 秒。按任意键继续。”
我不知道如何解决这个问题,任何建议将不胜感激。
【问题讨论】:
-
A是一个空指针。A首先没有明显的理由成为指针。 -
我最初没有尝试将 A 作为指针,但使用 miniMultSet
A 并为我得到“对 miniMultSet ::miniMultiSet() 的未定义引用的函数使用点”
标签: c++ list class templates set