C++,用自己定义的类创建一个数组,每一个数组元素都是这个类,但是赋值不进去 10
应该是这部分哪里出错了,但是不知道怎么改。求大神指点。代码:main.cppinclude"X.h"intmain(){Task*t;stringn;intdur,dea...
应该是这部分哪里出错了,但是不知道怎么改。求大神指点。
代码:
main.cpp
include"X.h"
int main()
{
Task *t;
string n;
int dur,deadl;
cout<<"输入你的任务名称."<<endl;
cin >> n;
cout<<"输入你的任务时间."<<endl;
cin>> dur;
cout<<"输入你的任务截止日期."<<endl;
cin>>deadl;
t->setDeadline(deadl);t->setDuration(dur);t->setTaskname(n);
//这里好像赋值不进去,一运行到这里就程序中断。。。
}
X.h
class Task {
string taskname ;
int duration;
int deadline;
public:
Task( string& n, unsigned int dur, unsigned int dl):taskname(n),duration(dur),deadline(dl){}
~Task(){}
string& getTaskname() { return taskname; }
void setTaskname(string& n){taskname = n;}
unsigned int getDuration() const { return duration; }
void setDuration(int dur){duration = dur;}
unsigned int getDeadline() const { return deadline; }
void setDeadline(int dl){ deadline = dl;}
void afficher(std::ostream& a = std::cout);
Task operator =(Task &t);
}; 展开
代码:
main.cpp
include"X.h"
int main()
{
Task *t;
string n;
int dur,deadl;
cout<<"输入你的任务名称."<<endl;
cin >> n;
cout<<"输入你的任务时间."<<endl;
cin>> dur;
cout<<"输入你的任务截止日期."<<endl;
cin>>deadl;
t->setDeadline(deadl);t->setDuration(dur);t->setTaskname(n);
//这里好像赋值不进去,一运行到这里就程序中断。。。
}
X.h
class Task {
string taskname ;
int duration;
int deadline;
public:
Task( string& n, unsigned int dur, unsigned int dl):taskname(n),duration(dur),deadline(dl){}
~Task(){}
string& getTaskname() { return taskname; }
void setTaskname(string& n){taskname = n;}
unsigned int getDuration() const { return duration; }
void setDuration(int dur){duration = dur;}
unsigned int getDeadline() const { return deadline; }
void setDeadline(int dl){ deadline = dl;}
void afficher(std::ostream& a = std::cout);
Task operator =(Task &t);
}; 展开
2个回答
展开全部
你的程序有一个错误,需要两个修改。
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 duration;
int deadline;
public:
Task(){} //缺省构造函数
Task( string& n, unsigned int dur, unsigned int dl):taskname(n),duration(dur),deadline(dl){}
~Task(){}
string& getTaskname() { return taskname; }
void setTaskname(string& n){taskname = n;}
unsigned int getDuration() const { return duration; }
void setDuration(int dur){duration = dur;}
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 dur,deadl;
cout<<" 输入你的任务名称."<<endl;
cin >> n;
cout<<"输入你的任务时间."<<endl;
cin>> dur;
cout<<"输入你的任务截止日期."<<endl;
cin>>deadl;
t.setDeadline(deadl);t.setDuration(dur);t.setTaskname(n);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译有什么提示?
t->setDeadline(deadl);t->setDuration(dur);t->setTaskname(n);
改为:
t.setDeadline(deadl);t.setDuration(dur);t.setTaskname(n);
t->setDeadline(deadl);t->setDuration(dur);t->setTaskname(n);
改为:
t.setDeadline(deadl);t.setDuration(dur);t.setTaskname(n);
追问
t.setDeadline(deadl);不行,编译的时候直接报错了。如果t->setDeadline(deadl);编译没有报错。我初始化t = 0,报错:有未经处理的异常: 0xC0000005: 写入位置 0x00000020 时发生访问冲突
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询