读书人

小弟我创建的类的对象如何报错呢

发布时间: 2013-04-09 16:45:09 作者: rapoo

我创建的类的对象怎么报错呢?

#include<iostream.h>
#include<string>

using namespace std;

class student
{
char name[10];
int deg;
char level[7];
friend class process;

public:
student(char na[], int d)
{
strcpy(name,na);
deg = d;
}
};

class process
{
public:
void trans(student s[])
{
int nOff;
nOff = s->deg;
if (nOff > 89)
{
nOff = 1;
}
else
{
if (nOff > 79)
{
nOff = 2;
}
else
{
if (nOff > 69)
{
nOff = 3;
}
else
{
nOff = 4;
}
}
}

switch (nOff)
{
case 1:
strcpy(s->level,"优");
break;
case 2:
strcpy(s->level,"良");
break;
case 3:
strcpy(s->level,"中");
break;
case 4:
strcpy(s->level,"及格");
break;
default:
strcpy(s->level,"不及格");
break;
}
}
};

void main(void)
{
student test[5];

}

[解决办法]
student类没有默认构造函数
[解决办法]
加个默认构造函数就可以了,
student()
{
// 对成员的初始化
}
[解决办法]
你的student没有默认构造函数。student test[5];就相当于创建了5个student对象的数组,但是student没有默认构造函数,所以出错
[解决办法]

class student
{
char name[10];
int deg;
char level[7];
friend class process;

public:
student(char na[] = "", int d = 0)
{
strcpy(name,na);
deg = d;
}
};



[解决办法]
class student
{
char name[10];
int deg;
char level[7];
friend class process;

public:
<span style="color: #FF0000;">student(char na[] = "", int d = 0)
{
strcpy(name,na);
deg = d;
}</span>
};

[解决办法]
构造函数可以有多个,你main函数里student test[5];生成的对象都是调用无参的构造函数,而你没有 所以报错了。你在student类里面添加一个student(){}就ok了。

读书人网 >C++

热点推荐