c++ 遇到问题需要关闭。我们对此引起的不便表示抱歉。

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:01:42
编译能通过,运行时就出现了以上的问题需要关闭
请大虾指教!

#include<iostream>
#include<cctype>
#include<string>
#include"Planet.h"

using namespace std;

int main()
{
string pname;
float aweight;
cout<<"please enter the name of a planet:";
cin>>pname;
cout<<"please enter your weight on earth:";
cin>>aweight;
Planet Aplanet(pname);
Aplanet.Calculate();
Aplanet.Returnstring();
return 0;
}

#include<iostream>
#include"Planet.h"

Planet::Planet(string pname)
{
string sname;
for (int i=0;i<pname.length();i++)
sname[i]=tolower(pname[i]);

if (sname=="mercury")
name=mercury;
else if (sname=="venus")
name=venus;
else if (sname=="earth")
name=earth;
else if (sname=="moon&qu

问题在构造函数Planet::Planet(string pname) 第三行,即
sname[i]=tolower(pname[i]);

sname还没有赋初值,你强行访问sname[i]会出现异常
所以在第二行改写为
string sname=pname;
就行了

另外,你还忘了在构造函数中给weight成员赋初值,这个错误就小很多了,你可以自己试着改一下。

最后,你这个实际上贴了是三个文件:
主文件,Planet.h和Planet.cpp
请写清,不然看起来很费劲的

问题信息呢

楼上的帮你看得那么仔细,支持楼上的。我是看着就晕,没看。
提点自己的意见:编译没问题,运行后出现“c++ 遇到问题需要关闭。我们对此引起的不便表示抱歉”。这种问题通常是由于数组越界、指针越界、内存泄露等引起的。