如何在 C++ 中将 class 的引用存储在相同类型的 class 中?
How can I store reference of a class in the same type of class in C++?
我有一个 class 人,我想在其中存储另一个人的引用 class 但我收到错误:函数“Person::operator=(const Person &)”(隐式声明)不能被引用——它是一个被删除的函数
在函数 getThem() 中
class Person {
private:
Person& them;
int number;
public:
Person giveYourself(){
return *this;
}
int giveNumber(){
return number;
}
void getThem(Person& they){
them = they.giveYourself();
}
};
我只是在回答这个问题,虽然我不认为按照你的方式做事是个好主意。我相信你需要的是 std::list<Person>
或类似的东西。
进入正题。在 class 中包含引用是完全可以的。但问题是,自动生成的复制赋值运算符和移动赋值运算符不知道如何处理引用。所以你必须手动定义它:
class Person {
private:
Person& them;
int number;
public:
Person &operator=(const Person &another) {
number = another.number;
return *this;
}
Person giveYourself(){
return *this;
}
int giveNumber(){
return number;
}
void getThem(Person& they){
them = they.giveYourself();
}
};
现在可以编译了。
我有一个 class 人,我想在其中存储另一个人的引用 class 但我收到错误:函数“Person::operator=(const Person &)”(隐式声明)不能被引用——它是一个被删除的函数
在函数 getThem() 中
class Person {
private:
Person& them;
int number;
public:
Person giveYourself(){
return *this;
}
int giveNumber(){
return number;
}
void getThem(Person& they){
them = they.giveYourself();
}
};
我只是在回答这个问题,虽然我不认为按照你的方式做事是个好主意。我相信你需要的是 std::list<Person>
或类似的东西。
进入正题。在 class 中包含引用是完全可以的。但问题是,自动生成的复制赋值运算符和移动赋值运算符不知道如何处理引用。所以你必须手动定义它:
class Person {
private:
Person& them;
int number;
public:
Person &operator=(const Person &another) {
number = another.number;
return *this;
}
Person giveYourself(){
return *this;
}
int giveNumber(){
return number;
}
void getThem(Person& they){
them = they.giveYourself();
}
};
现在可以编译了。