标题:程序异常退出??找不到错啊QAQ(类模板相关)
只看楼主
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
程序异常退出??找不到错啊QAQ(类模板相关)
#include<iostream>
using namespace std;

template<class T>
class MyArray
{
    public:
        MyArray(int s)
        {size=s;
        int i;
        for(i=0;i<size;i++)cin>>data[i];
        }
        MyArray(){;}
        void sort();
        void display();
        bool check();
        ~MyArray();
    private:
        T data[101];
        int size;
};
template<class T>
void MyArray<T>::sort()
{
    int i,j;
    T temp;
    for(i=0;i<size-1;i++)
    {
        for(j=0;j<size-1-i;j++)
        {
            if(data[j]>data[j+1])
            {
                temp=data[i];
                data[i]=data[i+1];
                data[i+1]=temp;
            }
        }
    }

}
template<class T>
void MyArray<T>::display()
{
    int i;
    for(i=0;i<size;i++)cout<<data[i]<<" ";
    cout<<endl;
}
template<class T>
MyArray<T>::~MyArray(){ delete[] data;}

template<class T>
bool MyArray<T>::check(){
    int i;
    for(i=0;i<size-1;i++)
        if(data[i]>data[i+1]) { cout<<"ERROR!"<<endl;return false;}
    return true;
}
int main( )
{
    MyArray<int> *pI;
    MyArray<float> *pF;
    MyArray<char> *pC;
    int ty, size;
    cin>>ty;
    while(ty>0){
        cin>>size;
        switch(ty){
            case 1: pI = new MyArray<int>(size);   pI->sort(); pI->check(); pI->display(); delete pI; break;
            case 2: pF = new MyArray<float>(size); pF->sort(); pF->check(); pF->display(); delete pF; break;
            case 3: pC = new MyArray<char>(size);  pC->sort(); pC->check(); pC->display(); delete pC; break;
        }
        cin>>ty;
    }
    return 0;
}
搜索更多相关主题的帖子: private display include public 
2017-05-30 08:49
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:7 
是哪里有问题呢,请描述清楚哦~

~~~~~~我的明天我知道~~~。
2017-05-30 09:08
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
template<class T>
MyArray<T>::~MyArray(){ /*delete[] data;*/}

~~~~~~我的明天我知道~~~。
2017-05-30 09:30
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
得分:0 
回复 3楼 xufan
是这里有问题吗?这段代码运行就异常退出,但是我自己找不到问题QAQ
2017-05-30 20:27
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:7 
delete[] data;和delete []data;
不知道这两种写法有没有区别,不妨改一下看看。
2017-06-01 14:25
某一天
Rank: 2
等 级:论坛游民
威 望:1
帖 子:33
专家分:77
注 册:2015-6-15
得分:7 
T data[101];
data是一个成员数组,是系统管理内存,不由用户释放的.不能使用delete.
delete需要和new匹配,没有new为什么要delete?删掉delete[] data;应该就好了.

另外,在构造函数里这么搞,实在有点不科学,虽然语法没问题:cin>>data[i];
2017-06-02 14:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477467-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.250397 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved