0

我正在为大型代码存储库创建一个检测类,为此我创建了一个如下所示的类:

template <class T> class stats:public singleton<stats<T> >{...};

单例类的定义如您从上面所期望的那样,并且不是我可以控制的类。因为我只想要每种类型的一个统计实例,所以我收集的统计信息应该是一个单例,并且在我们的代码库中我们禁止自定义单例类(否则我将实现我自己的单例接口,从而防止我面临的问题)问题是我也想工具单例,所以会发生以下情况:

someTooledClass();
-> stats<someTooledClass>
-> singleton<stats<someTooledClass> >
-> stats<singleton<stats<someTooledClass> > >
etc.

我的问题是我可以专攻stats<singleton<T> >吗?因为 T 是未知的,所以我不确定这将如何工作。理想情况下,我不想stats<singleton<stats<T> > >永远存在,但stats<singleton<T> >我确实想要所有其他人。我以前从来没有真正做过这样的事情......所以我有点困惑。

编辑:我想我会把它放在这里是出于可见性的原因。工具单例是可能的,因为我在构建中为所有类全局覆盖 new 和删除到我自己的自定义类,因为单例在构建路径中(确实必须是)我可以用这种方式工具它。对于背景,我被赋予的任务是创建一个内存管理器,所以我知道我在做什么(我认为......但无论如何这确实是一个单独的问题)。但是现在我正在尝试收集所有当前使用的内存分配的统计信息,这些分配按什么类型,而不仅仅是按大小类。

4

1 回答 1

1

你试过了吗?

请注意,您不能使该类不存在,但是您可以使其不从单例继承,以中断链。

template <class T>
class stats<singleton<stats<T> > > {};
于 2013-07-15T23:07:33.890 回答