我想实现一个在创建时将其字段addr初始化为唯一值的class Address。每次创建Address实例时,该值都必须递增1。
让我们举个例子。在执行以下代码之后:
Address x;
Address y;x.addr应为1,而y.addr应为2。
为了实现这一点,我想到了Curiously Recurring Template Pattern。这可行吗?另外,有没有更简单的方法来实现同样的行为?
TIA,Jir
发布于 2011-04-07 01:35:11
当然,您可以完全按照您引用的维基百科文章中的说明进行操作。(除了它听起来不像是要递减dtor中的计数器。)或者,如果您只需要在Address类中使用它,那么您可以像CRTP实现那样一次性地执行以下操作:
static int n_addresses = 0;
class Address {
  int addr;
  Address() { addr = ++n_addresses; }
};或者类似的东西。
https://stackoverflow.com/questions/5570514
复制相似问题