Есть такой способ регистрации. Везде ли он должен работать?
template<class T>
class AAAA {
struct helper {
helper(){std::cout<<"+"<<typeid(T).name()<<"\n";}//Необязательный конструктор
virtual~helper(){
AAAA<T>::registrator;//В любой виртуальной функции упомяните регистратор
std::cout<<"-"<<typeid(T).name()<<"\n";
}
};
static helper registrator;
};
template<class T>//Это тоже необходимо
typename AAAA<T>::helper AAAA<T>::registrator;
//Теперь любое инстанцирование AAAA<T> создаёт регистратор
template AAAA<int>;//Можно так
class your_class : AAAA<your_class>{};//или так
Не забывайте, пожалуйста, использовать теги [c]...[/c], [code]...[/code] и т.п. для выделения фрагментов кода. -- ПК
> Есть такой способ регистрации. Везде ли он должен работать?
> > template<class T>
> class AAAA {
> struct helper {
> helper(){std::cout<<"+"<<typeid(T).name()<<"\n";}//Необязательный конструктор
>
> virtual~helper(){
> AAAA<T>::registrator;//В любой виртуальной функции упомяните регистратор
> std::cout<<"-"<<typeid(T).name()<<"\n";
> }
> };
>
> static helper registrator;
> };
>
> template<class T>//Это тоже необходимо
> typename AAAA<T>::helper AAAA<T>::registrator;
>
> //Теперь любое инстанцирование AAAA<T> создаёт регистратор
>
> template AAAA<int>;//Можно так
>
Это должно работать.
> > class your_class : AAAA<your_class>{};//или так
>
А это
может и не работатьАвтор: afkos
Дата: 04.09.05
.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
>> template AAAA<int>;//Можно так
ПК>Это должно работать.
>> >> class your_class : AAAA<your_class>{};//или так
>>
ПК>А это может и не работать.
Хотелось бы получить ссылки на стандарт или хотя бы названия компиляторов где это не работает.
Насколько я знаю, если конструктор глобального\статического объекта имеет побочные действия то объект обязан быть создан.