level 1
夫光阴者
楼主
#include<iostream>
#include<cstring>
//#include<string>
using namespace std;
class ScoreRec
{
public:
ScoreRec()
{
name = NULL;
ID = NULL;
score = NULL;
}
~ScoreRec()
{
if (name != NULL )
delete [] name;
if(ID != NULL)
delete []ID;
cout << "deconstructor 的意思是析构之后....\n";
}
ScoreRec(char * newName ,char * newID ,char newScore)
{
name = new char[strlen(newName) + 1];
strcpy(name , newName);
ID = new char[strlen(newID) + 1];
strcpy (ID,newID);
score = newScore ;
cout << "被封" << endl;
}
ScoreRec(ScoreRec & anotherScoreRec)
{
name = new char[strlen (anotherScoreRec.name) + 1];
ID = new char[strlen(anotherScoreRec.ID) + 1];
strcpy(name , anotherScoreRec.name);
strcpy(ID , anotherScoreRec.ID);
score = anotherScoreRec.score;
cout << "您好, 这里是复制构造函数.........\n";
}
void getScoreRec(char *nameGet ,char *IDGet,char &ScoreGet)
{
strcpy(nameGet , name);
strcpy(IDGet , ID);
ScoreGet = score;
}
void setName(char *newName)
{
if(name != NULL)
delete []name;
name = new char[strlen(newName) + 1];
strcpy(name , newName);
}
void setID(char *newID)
{
if(ID != NULL)
delete []name;
ID = new char[strlen(newID) + 1];
strcpy(ID ,newID);
}
void setScore(char newScore)
{
score = newScore;
}
private:
char *name;
char *ID;
char score;
};
ScoreRec setScoreRec(char *newName ,char *newID ,char newScore)
{
ScoreRec tempRec;
tempRec.setName(newName);
tempRec.setID(newID);
tempRec.setScore(newScore);
return tempRec;
}
void writeScoreRec(ScoreRec &Rec)
{
char studentName[50] , studentID[50];
char studentScore;
Rec.getScoreRec(studentName , studentID , studentScore);
cout << "ID: " << studentID << endl;
cout << "name: "<< studentName << endl;
cout << "score: " << studentScore << endl;
return ;
}
int main()
{
char studentName[50] = "asd";
char studentID[50] = "123456";
char studentScore = 'A';
writeScoreRec(setScoreRec(studentName,studentID,studentScore));
//writeScoreRec(setScoreRec(studentName , studentID , studentScore));
return 0;
}
出现的错误是 invalid initialization of non-const reference of type 'ScoreRec&' from an rvalue of type 'ScoreRec'|
这段程序vc2002 环境下是通过的,在code :blocks 出现了上述报错,希望有人能够相细解释一下报错的原因
2017年11月15日 03点11分
1
#include<cstring>
//#include<string>
using namespace std;
class ScoreRec
{
public:
ScoreRec()
{
name = NULL;
ID = NULL;
score = NULL;
}
~ScoreRec()
{
if (name != NULL )
delete [] name;
if(ID != NULL)
delete []ID;
cout << "deconstructor 的意思是析构之后....\n";
}
ScoreRec(char * newName ,char * newID ,char newScore)
{
name = new char[strlen(newName) + 1];
strcpy(name , newName);
ID = new char[strlen(newID) + 1];
strcpy (ID,newID);
score = newScore ;
cout << "被封" << endl;
}
ScoreRec(ScoreRec & anotherScoreRec)
{
name = new char[strlen (anotherScoreRec.name) + 1];
ID = new char[strlen(anotherScoreRec.ID) + 1];
strcpy(name , anotherScoreRec.name);
strcpy(ID , anotherScoreRec.ID);
score = anotherScoreRec.score;
cout << "您好, 这里是复制构造函数.........\n";
}
void getScoreRec(char *nameGet ,char *IDGet,char &ScoreGet)
{
strcpy(nameGet , name);
strcpy(IDGet , ID);
ScoreGet = score;
}
void setName(char *newName)
{
if(name != NULL)
delete []name;
name = new char[strlen(newName) + 1];
strcpy(name , newName);
}
void setID(char *newID)
{
if(ID != NULL)
delete []name;
ID = new char[strlen(newID) + 1];
strcpy(ID ,newID);
}
void setScore(char newScore)
{
score = newScore;
}
private:
char *name;
char *ID;
char score;
};
ScoreRec setScoreRec(char *newName ,char *newID ,char newScore)
{
ScoreRec tempRec;
tempRec.setName(newName);
tempRec.setID(newID);
tempRec.setScore(newScore);
return tempRec;
}
void writeScoreRec(ScoreRec &Rec)
{
char studentName[50] , studentID[50];
char studentScore;
Rec.getScoreRec(studentName , studentID , studentScore);
cout << "ID: " << studentID << endl;
cout << "name: "<< studentName << endl;
cout << "score: " << studentScore << endl;
return ;
}
int main()
{
char studentName[50] = "asd";
char studentID[50] = "123456";
char studentScore = 'A';
writeScoreRec(setScoreRec(studentName,studentID,studentScore));
//writeScoreRec(setScoreRec(studentName , studentID , studentScore));
return 0;
}
出现的错误是 invalid initialization of non-const reference of type 'ScoreRec&' from an rvalue of type 'ScoreRec'|
这段程序vc2002 环境下是通过的,在code :blocks 出现了上述报错,希望有人能够相细解释一下报错的原因