: error C2440: “初始化”: 无法从“const char *”转换为“student”
#include <iostream>
#include <cstring>
using namespace std;
class subject
{
private:
char *teachername;
int score;
int times;
char *ID;
public:
subject(char *tn,int score,int times,char *id)
{
this->times=times;
this->score=score;
teachername=new char[strlen(tn)+1];
strcpy(teachername,tn);
ID=new char[strlen(id)+1];
strcpy(ID,id);
}
void show()
{
cout<<"teachername:"<<teachername<<endl;
cout<<"score:"<<score<<endl;
cout<<"times:"<<times<<endl;
cout<<"ID:"<<ID<<endl;
}
int getscore()
{
return score;
}
~subject()
{
if(teachername)
{
delete []teachername;
teachername=NULL;
}
if(ID)
{
delete []ID;
ID=NULL;
}
}
};
class student
{
private:
char *stuname;
int no;
subject a;
subject b;
subject c;
public:
student(char *sn,int no,
char *atn,int ascore,int atimes,char *aid,
char *btn,int bscore,int btimes,char *bid,
char *ctn,int cscore,int ctimes,char *cid):a(atn,ascore,atimes,aid),b(btn,bscore,btimes,bid),c(ctn,cscore,ctimes,cid)
{
stuname=new char[strlen(sn)+1];
strcpy(stuname,sn);
this->no=no;
}
void show()
{
cout<<"studentname:"<<stuname<<endl;
cout<<"no:"<<no<<endl;
a.show();
b.show();
c.show();
}
int average()
{
return (a.getscore()+b.getscore()+c.getscore())/3;
}
~student()
{
if(stuname)
{
delete []stuname;
stuname=NULL;
}
}
};
void main()
{
student stu=("zjw",201111621331,
"wxh",92,3,"01",
"mf",62,4,"02",
"xlq",88,2,"03");
stu.show();
cout<<"average:"<<stu.average();
}
>c:\users\kwaver\documents\visual studio 2010\projects\test\test\main.cpp(89): error C2440: “初始化”: 无法从“const char *”转换为“student”
1> 无构造函数可以接受源类型,或构造函数重载决策不明确
[解决办法]
student stu=("zjw",201111621331,
"wxh",92,3,"01",
"mf",62,4,"02",
"xlq",88,2,"03");
构造stu时多个=号了,去掉就行了
student stu("zjw",201111621331,
"wxh",92,3,"01",
"mf",62,4,"02",
"xlq",88,2,"03");