c++ - 如何使该类的每个实例的类的数据成员唯一
问题描述
这是我编写的程序的代码,除了它只有一个要求的部分外,一切都完美无缺。类 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";
}
}
解决方案
这可能是上一个答案的意图,尽管只要构造一个对象,这个答案就会增加。这样一来,每件物品在生命中都会被赋予一个新的序列号。
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;
推荐阅读
- node.js - 如何停止 mamp pro 覆盖 localhost:3000?
- html - Ionic 3 加载组件未全屏
- ios - Swift 4:没有这样的模块'CoreServices.DictionaryServices'
- apache-spark - 运行集群模式火花作业时如何修复“连接被拒绝错误”
- dart - 如何防止基于flutter中的自定义逻辑重新渲染小部件?
- css - 一个完整的 div 宽度
- node.js - 在另一个模式中导入自定义猫鼬模式
- android - 查找要通过 Intent 启动的包名称
- operating-system - 操作系统内核数据的位置
- sql - 如何解决“外键约束格式不正确”问题