Я пытаюсь создать класс шаблона, который содержит статический список объектов, в котором есть только один. То, что я до сих пор работает, но дает мне копию «mylist» для каждого типа класса B. Как я могу изменить его, чтобы получить один «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 класс Foo;', каждый экземпляр 'Foo ' для разных 'T' является совершенно другим типом_. Следовательно, если 'Foo <>' содержит статический член данных, каждый экземпляр 'Foo ' для разных 'T' будет содержать другой статический член данных. Чтобы иметь один элемент данных, который может содержать разные типы, посмотрите на [Boost.Variant] (http://www.boost.org/libs/variant/), если все типы известны заранее или [Boost.Any] (http: //www.boost.org/libs/any/) в противном случае. (Но на самом деле, ваш дизайн звучит очень сомнительно в первую очередь.) –
ildjarn
Вы после сингла? http://www.infernodevelopment.com/singleton-c – Joel