【发布时间】:2012-02-02 21:46:03
【问题描述】:
我正在尝试创建一个模板类,其中包含一个静态对象列表,其中只有一个。到目前为止我所做的工作,但它为我提供了每种不同类型的 B 类参数的“mylist”副本。无论模板参数如何,我如何更改它以便为 B 类的所有实例化获得一个“mylist”?
这就是我所拥有的:
template <class T> class A {
...
};
template <class T> class B {
static list<A<T> > mylist;
...
};
template <class T> list< A<T> > B<T>::mylist;
提前致谢:)
【问题讨论】:
-
您从根本上误解了模板。给定
template<class T> class Foo;,不同Ts 的Foo<T>的每个实例都是完全不同的类型。因此,如果Foo<>包含静态数据成员,则不同Ts 的Foo<T>的每个实例都将包含不同的静态数据成员。要拥有一个可以包含不同类型的数据成员,请查看Boost.Variant,如果所有类型都事先已知,否则查看Boost.Any。 (但实际上,你的设计一开始就很值得怀疑。)
标签: c++ templates stl static member