我想創建一個模板類,其中包含一個只有一個的靜態對象列表。我到目前爲止的工作,但它給了我的每個不同類型的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