c++报错：invalid conversion from int to int

#include
#include

using namespace std;
class Step
{
public:
Step(int a[7]);
Step(const Step &c);
~Step(){}
int getMax();
int getMin();
float getAverage();
private:
static float Averstep;
int Maxstep,Minstep;
int step[7];
};
Step::Step(int a[7])
{
for(int i=0;i {
step[i]=a[i];
}
}
Step::Step(const Step &c)
{
for(int i=0;i {
step[i]=c.step[i];
}
}
float Step::getAverage()
{
for(int i=0;i Averstep=(Averstep+step[i])/7;
return Averstep;
}
int Step::getMax()
{
int Maxstep=step[0];
for (int i=1;i {
if (step[i]>Maxstep) {
Maxstep=step[i];
}
}
return Maxstep;
}
int Step::getMin()
{
int Minstep=step[0];
for (int i=1;i<=6;i++)
if (step[i] Minstep=step[i];
}
return Minstep;
}
{
cout }
float Step::Averstep=0.0;
int main()
{
int T;
int step[7];
cin>>T;
while(cin>>step[0]>>step[1]>>step[2]>>step[3]>>step[4]>>step[5]>>step[6])
{
Step x(step[7]); *****（错误位置）*****
}
return 0;
}

``````
``````

1个回答

step【7】是一个int数，而你的step是0-6的，它越界了

Step x(step);

//*************************

1.实例化的时候只调用了构造函数，没有用他的方法，也就是没有计算最大最小值（可以在计算最大最小的函数里打个断点），我在构造函数里执行了计算的函数所以输出是正常的
2.输入的数据组数没用，这个简单，自己改吧

``````#include "stdio.h"
#include "iostream"

using namespace std;

class Step
{
public:
Step(int a[7]);
Step(const Step &c);
~Step(){}
int getMax();
int getMin();
float getAverage();
private:
static float Averstep;
int Maxstep, Minstep;
int step[7];
};
Step::Step(int a[7])
{
for (int i = 0; i<7; i++)
{
step[i] = a[i];
}
Maxstep = getMax();
Minstep = getMin();
Averstep = getAverage();
}
Step::Step(const Step &c)
{
for (int i = 0; i<7; i++)
{
step[i] = c.step[i];
}
}
float Step::getAverage()
{
for (int i = 0; i<7; i++)
Averstep = (Averstep + step[i]) / 7;
return Averstep;
}
int Step::getMax()
{
int Maxstep = step[0];
for (int i = 0; i<7; i++)
{
if (step[i]>Maxstep)
{
Maxstep = step[i];
}
}
return Maxstep;
}
int Step::getMin()
{
int Minstep = step[0];
for (int i = 1; i <= 6; i++)
{
if (step[i] < Minstep)
Minstep = step[i];
}
return Minstep;
}
{
cout << "max" << Maxstep << endl;
cout << "min" << Minstep << endl;
cout << "ave" << Averstep << endl;
}

float Step::Averstep = 0.0;
int main()
{
int T;
int step[7];
cin >> T;
while (cin >> step[0] >> step[1] >> step[2] >> step[3] >> step[4] >> step[5] >> step[6])
{
Step x(step);

}
system("pause");
return 0;
}
``````

Josie0625 这个需要多组输入输出的应该怎么修改啊

Josie0625 回复豆丷: Step::Step(int a[7]) { for(int i=0;i<7;i++) { step[i]=a[i]; } } Step::Step(const Step &c) { for(int i=0;i<7;i++) { step[i]=c.step[i]; } } 不好意思我写的是这样的 复制代码的时候没有粘贴好

Josie0625 你好 step的问题我已经修改了 能不能帮助看看for循环哪里不完整 需要怎么改？非常感谢