我正在做一些可能很愚蠢的事情,但如果它有效,那就太好了。
我试图以一种我需要自己的查找结构的方式专门化类型,该查找结构本质上是全局的(但理想情况下封装为类变量),但我希望对象是类型安全的,因此它们是参数化的。
因此,我基本上有
template<class T, int N>
class SpecialArray
{
//...
private:
static map<string, internal_t> lookupTable
}
无论出于何种原因,直到我去初始化lookupTable时我才想到,当我说
template <class T, int N>
SpecialArray<T,N>::lookupTable;
将有许多不同lookupTable
的 s 附加到SpecialArray
.
我怀疑这可能只是一个白日梦,正确的答案就是让它成为一个单独的全局单例对象,但无论如何,有没有办法让lookupTable
所有的SpecialArray
s 都只有一个?
就像,在我心目中的 C++(这不是真正的 C++)中,这会像
template <class T, int N>
SpecialArray<*,*>::lookupTable;
...但遗憾的是 GCC 并没有在我的脑海中编译 C++
有没有什么实际的方法可以得到我想要的东西(在 C++0x-land 的某个地方或其他地方)?我也可能会使用一些操纵此查找表的静态方法(它不跟踪类型或 Ns)遇到这个问题。
...对不起,如果这没有任何意义。
提前感谢您提供的任何帮助或同情。