gpt4 book ai didi

c++ - 如何在满足特定条件时限制对象创建

转载 作者:行者123 更新时间:2023-11-30 01:03:04 31 4
gpt4 key购买 nike

我遇到了这个问题:我写了一个 C++ 类,它表示具有给定地址的远程设备(总线上可以有多个设备,每个设备都有不同的地址)。该地址在对象创建时作为构造函数的参数传递给类。该类的每个实例都应该有一个不同的地址,如果您试图创建两个具有相同地址的对象,该类应该拒绝它(作为一种单例,但带有参数)。我该如何解决这个问题?谢谢!

最佳答案

一种可能的方法是跟踪已在类级别使用的地址:

class Monopoly {
Address addr;
static std::unordered_set<Address> taken;
public:
Monopoly(Address const &a): addr(a) {
if(!taken.insert(a).second) {
throw std::logic_error(a.toString() + " is already in use");
}
}
Monopoly(Monopoly &&) = default;
Monopoly(Monopoly const &) = delete;
Monopoly &operator=(Monopoly &&) = default;
Monopoly &operator=(Monopoly const &) = delete;
~Monopoly() { taken.erase(addr); }
};

关于c++ - 如何在满足特定条件时限制对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839399/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com