问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++,用自己定义的类创建一个数组,每一个数组元素都是这个类,但是赋值不进去

发布网友 发布时间:2023-05-04 23:02

我来回答

2个回答

热心网友 时间:2023-11-06 01:24

你的程序有一个错误,需要两个修改。

1. 错误: 主程序里面的

Task *t;

t 是一个指针,它需要具体的指向某个变量,才能使用;否则t指向的就是一个“野”地址,如果是其数据的空间,就发生冲突,程序就会崩溃。你可以用new分配一个新地址,然后在程序退出签delete即可。干脆不要指针,用一个变量,还简单些。


2. 修改: 简单的修改为:

Task t;

但这是由于你的Task定义里面没有构造函数,即t是需要带参数的;否则编译都不会通过,因此你可以添加一个缺省构造函数:

Task(){}

然后main程序里面,所有原来【t->】 修改为【t.】

整理后的程序如下:

#include <iostream>

using namespace std;

class Task {
    string taskname ;
    int ration;
    int deadline;
public:
    Task(){} //缺省构造函数
    Task( string& n, unsigned int r, unsigned int dl):taskname(n),ration(r),deadline(dl){}
    ~Task(){}
    string& getTaskname() { return taskname; }
    void setTaskname(string& n){taskname = n;}
    unsigned int getDuration() const { return ration; }
    void setDuration(int r){ration = r;}
    unsigned int getDeadline() const { return deadline; }
    void setDeadline(int dl){ deadline = dl;}
    void afficher(std::ostream& a = std::cout);
    Task operator =(Task &t);
};

int main(int argc, char** argv)
{
    Task t; //不要用指针,否则应该指向某个变量,或用new分配地址(记得结束前delete)
    
    string n;
    int r,deadl;
    
    cout<<" 输入你的任务名称."<<endl;
    cin >> n;
    
    cout<<"输入你的任务时间."<<endl;
    cin>> r;
    
    cout<<"输入你的任务截止日期."<<endl;
    cin>>deadl;

    t.setDeadline(deadl);t.setDuration(r);t.setTaskname(n);
}

热心网友 时间:2023-11-06 01:24

编译有什么提示?
t->setDeadline(deadl);t->setDuration(r);t->setTaskname(n);
改为:
t.setDeadline(deadl);t.setDuration(r);t.setTaskname(n);追问t.setDeadline(deadl);不行,编译的时候直接报错了。如果t->setDeadline(deadl);编译没有报错。我初始化t = 0,报错:有未经处理的异常: 0xC0000005: 写入位置 0x00000020 时发生访问冲突

热心网友 时间:2023-11-06 01:24

你的程序有一个错误,需要两个修改。

1. 错误: 主程序里面的

Task *t;

t 是一个指针,它需要具体的指向某个变量,才能使用;否则t指向的就是一个“野”地址,如果是其数据的空间,就发生冲突,程序就会崩溃。你可以用new分配一个新地址,然后在程序退出签delete即可。干脆不要指针,用一个变量,还简单些。


2. 修改: 简单的修改为:

Task t;

但这是由于你的Task定义里面没有构造函数,即t是需要带参数的;否则编译都不会通过,因此你可以添加一个缺省构造函数:

Task(){}

然后main程序里面,所有原来【t->】 修改为【t.】

整理后的程序如下:

#include <iostream>

using namespace std;

class Task {
    string taskname ;
    int ration;
    int deadline;
public:
    Task(){} //缺省构造函数
    Task( string& n, unsigned int r, unsigned int dl):taskname(n),ration(r),deadline(dl){}
    ~Task(){}
    string& getTaskname() { return taskname; }
    void setTaskname(string& n){taskname = n;}
    unsigned int getDuration() const { return ration; }
    void setDuration(int r){ration = r;}
    unsigned int getDeadline() const { return deadline; }
    void setDeadline(int dl){ deadline = dl;}
    void afficher(std::ostream& a = std::cout);
    Task operator =(Task &t);
};

int main(int argc, char** argv)
{
    Task t; //不要用指针,否则应该指向某个变量,或用new分配地址(记得结束前delete)
    
    string n;
    int r,deadl;
    
    cout<<" 输入你的任务名称."<<endl;
    cin >> n;
    
    cout<<"输入你的任务时间."<<endl;
    cin>> r;
    
    cout<<"输入你的任务截止日期."<<endl;
    cin>>deadl;

    t.setDeadline(deadl);t.setDuration(r);t.setTaskname(n);
}

热心网友 时间:2023-11-06 01:24

编译有什么提示?
t->setDeadline(deadl);t->setDuration(r);t->setTaskname(n);
改为:
t.setDeadline(deadl);t.setDuration(r);t.setTaskname(n);追问t.setDeadline(deadl);不行,编译的时候直接报错了。如果t->setDeadline(deadl);编译没有报错。我初始化t = 0,报错:有未经处理的异常: 0xC0000005: 写入位置 0x00000020 时发生访问冲突

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人字梯有什么安全隐患吗 怎样激发青春期孩子的内驱力 如何激发青春期孩子的内驱力 ...小题1:移船相近邀相见,添酒回灯重开宴。 , &amp;n... L1和L2串联 电压表并联在L1两端 当L1断路后 电压表测的为什么就成了电源... L1和L2串联,用电压表测L1两端的电压,L2不亮时,电流表为什么测的是电源电... 电路上传连两个灯泡L1与L2电压表测L1电压,当L1短路与断路时电压表情况... 对方拖着不办离婚手续该怎么办 计算机一级电子表格怎么拿分 如何配置思源黑体为latex中文字体? 思源黑体字体怎么安装 2015年一级建造师视频?求好人共享 请教大家,2010年一级建造师的视频哪里有?谢谢 一级建造师的视频!!资料!!急需有就发来!谢 情侣项链代表什么意思? 为什么说社会主义基本经济制度适合我国国情字数不少于200字? 大学生在中国特色社会主义制度的优势中学到了什么? 参加08年奥运会的所有国家的英文缩写 机械工程测试技术基础是什么 vivo手机怎样截闪图 ctp电池充电时 当温度低于多少度时 启动单独加热 刀片电池是ctp吗 梦见熊像红 梦见红色北极熊的预兆 梦见熊像红的预兆 233乐园一次广告都不会出来的怎么 关网可以防233乐园的广告吗? 233乐园怎么看广告 233乐园如何无广告 233乐园怎么去除广告 不是pc端店铺首页的第一屏 什么是TFTP?拜托各位大神 auto reverse是什么意思 安字取名男孩有寓意属鼠最搭的名字有哪些? 在C语言中,怎么分离正整数的各位数字? 请问c++怎么分离数位,比如123要答应出来,怎么打印? 还有n位数怎么提取?(要用while循环做 ) 如何用C++编程语言数位分离的方法判断一个数是否是四位数? ins名字旁边有个锁什么意思 c++或c解答求大神 分离整数的各个数位 c语言中。为什么要将函数与数据分离 推特怎么更改设置看隐私内容 分离整数的各个数位c语言 推特上更改隐私设置是什么意思 交换机基本配置中,密码设置“password”模式和“secret”模式有什么区别? 猫为什么突然在屋里拉屎 猫咪为什么在家里乱拉便便 钉钉下载过的文件怎么再下载 直肠下段花斑样改变是有炎症吗 applestore发货快吗 卡西欧gsw—h1000如何关闭省电模式 卡西欧手表不显示秒数