首页 > 解决方案 > 如何使该类的每个实例的类的数据成员唯一

问题描述

这是我编写的程序的代码,除了它只有一个要求的部分外,一切都完美无缺。类 Department 的 ID 数据成员对于该类的每个实例应该是唯一的。我尝试使用运算符重载来比较创建的部门的 ID。但是这样做的问题是,应该在程序的主驱动程序中进行比较,并且需要在类的构造函数中或类内部进行比较。

Here is the code

class Department {
public:
    Department(string id) {
        ID = id;
    }
    
    bool operator== (const Department& rhs) {
        return ID == rhs.ID;
    }

    friend ostream& operator<<(ostream& out, const Department& value);
protected:
    string ID;
};

ostream& operator<<(ostream& out, const Department& value)
{
    out << value.ID;
    return out;
}

int main() {
    Department d1("ID-1");
    Department d2("ID-1");
    
    if (d1 == d2) {
        cout << "They are the same";
    }
    else {
        cout << "No the same";
    }
}

标签: c++classoperator-overloading

解决方案


这可能是上一个答案的意图,尽管只要构造一个对象,这个答案就会增加。这样一来,每件物品在生命中都会被赋予一个新的序列号。

class Department {
public:
    Department() {
        ID = "ID_" + std::to_string(IDcount);
        ++IDcount;
    }
    
    bool operator== (const Department& rhs) {
        return ID == rhs.ID;
    }

protected:
    string ID;
    static int IDcount;
};
int Department::IDcount = 0;

推荐阅读