如何在 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();
    }
};

现在可以编译了。