我想创建一个模板类,其中包含一个只有一个的静态对象列表。我到目前为止的工作,但它给了我的每个不同类型的B类参数“mylist”的副本。我怎样才能改变它,让我得到一个“mylist”类B的所有实例化,而不管模板参数如何?在模板中使用静态变量
这是我所:提前:)
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 Foo;',不同'T'的'Foo '的每个实例都是完全不同的类型。因此,如果'Foo <>'包含一个静态数据成员,则针对不同'T'的每个'Foo '实例将包含不同的静态数据成员。要有一个可以包含不同类型的数据成员,请查看[Boost.Variant](http://www.boost.org/libs/variant/),如果事先已知所有类型,或者[Boost.Any](http: //www.boost.org/libs/any/)。 (但是,真的,你的设计听起来非常可疑。) –
ildjarn
2012-02-02 21:48:54
你是在单身之后吗? http://www.infernodevelopment.com/singleton-c – Joel 2012-02-02 21:53:43