className &temp (someOtherclassName &c)
질문은 무엇을 반환해야합니까? 클래스에서 새로 만든 개체를 반환하려고 시도 중입니다. 작동하지 않으며 참조 또는 포인터를 반환하려고 시도했지만 작동하지 않습니다.참조 반환 유형이있는 함수에서 반환 할 대상은 무엇입니까?
#include<iostream>
#include<cstring>
using namespace std;
class Clen{
private:
char name[50];
char surname[50];
int level;
public:
Clen(char n[] = "null", char s[] = "null", int l = 1){
strcpy(name, n);
strcpy(surname, s);
level = l;
}
//operator++
Clen operator++(int){
Clen temp(*this);
++level;
return temp;
}
//++operator
Clen &operator ++(){
++level;
return *this;
}
int getLevel(){
return level;
}
//operator <<
friend ostream &operator << (ostream &output, const Clen &right);
//operator==
friend bool operator == (const Clen &left, const Clen &right);
//operator!=
friend bool operator != (const Clen &left, const Clen &right);
};
ostream &operator << (ostream &output, const Clen &right){
output << right.name << " " << right.surname << ", " << right.level << endl;
return output;
}
bool operator == (const Clen &left, const Clen &right){
if(left.level == right.level)
return true;
return false;
}
bool operator != (const Clen &left, const Clen &right){
return !(left == right);
}
class Klub{
private:
char name[100];
Clen *clenovi;
int elements;
void copy(const Klub &toCopy){
strcpy(name, toCopy.name);
elements = toCopy.elements;
clenovi = new Clen[elements + 1];
for(int i = 0; i < elements; i++){
clenovi[i] = toCopy.clenovi[i];
}
}
public:
//constructor
Klub(char n[] = "null", Clen c[] = NULL, int e = 0){
strcpy(name, n);
elements = e;
clenovi = new Clen[elements + 1];
for(int i = 0; i < elements; i++){
clenovi[i] = c[i];
}
}
//copy constructor
Klub(const Klub &toCopy){
copy(toCopy);
}
//assignment operator
Klub &operator = (const Klub &right){
if(this == &right)
return *this;
delete [] clenovi;
copy(right);
return *this;
}
//destructor
~Klub(){
delete [] clenovi;
}
//operator <<
friend ostream &operator << (ostream &output, const Klub &right);
//operator +=
Klub &operator +=(Clen c){
Clen *temp = clenovi;
clenovi = new Clen[elements + 1];
for(int i = 0; i < elements; i++){
clenovi[i] = temp[i];
}
clenovi[elements] = c;
++elements;
delete [] temp;
return *this;
}
Klub &novKlub(Clen &c){
Klub newKlub;
strcpy(newKlub.name, name);
for(int i = 0; i < elements; i++){
if(c.getLevel() == clenovi->getLevel()){
newKlub += clenovi[i];
}
}
return *this;
}
};
ostream &operator << (ostream &output, const Klub &right){
output << right.name << endl;
for(int i = 0; i < right.elements; i++){
output << right.clenovi[i] << endl;
}
return output;
}
int main()
{
Clen clen;
int n, stepen;
char ime[30], prezime[30];
cin >> ime >> n;
Klub k1(ime);
for(int i = 0; i < n; i++){
cin >> ime >> prezime >> stepen;
Clen c(ime, prezime, stepen);
k1 += c;
clen = c;
}
Klub k2 = k1.novKlub(clen);
cout << k2;
return 0;
}
기능에 따라 달라집니다. 일반적으로 함수가 호출되는 인스턴스 또는 인수 (참조이기도 함) 중 하나를 반환합니다. 함수 내에서 생성 된 참조는 반환 할 수 없습니다. 당신은 실제로 무엇을하려고합니까? – BoBTFish
@ 101010 함수에서 새로 생성 된 임시 객체를 반환해야합니다. –
@ M.T! 그것이 당신이 확실히하지 않는 한가지입니다. 더 이상 존재하지 않는 것에 대한 참조로 끝날 것입니다. – BoBTFish