How about
:
class A
{
public:
A(){}
virtual ~A() {}
virtual const type_info & getTypeInfo() const {return typeid(A); }
};
template <class T>
class B : public A
{
public:
virtual const type_info & getTypeInfo() const {return typeid(T); }
};
int main(int argc, char **argv)
{
A anA;
A* pA = new B<int>;
std::cout << anA.getTypeInfo().name() << std::endl;
std::cout << pA->getTypeInfo().name() << std::endl;
return 0;
}
regards,
Aiden
<> wrote in message
news: oups.com...
>I have the following situation:
>
> class A
> {
> public:
> virtual ~A() {}
> };
>
> template < typename T >
> class B : public A
> {
> };
>
> The problem is to find the template argument T when a function receives
> only a pointer A* (and we know for sure that the A* indeed points to a
> B<T>*).
>
> One way is to dynamic_cast to a bunch of know B<T>, but this is kind of
> heavy and works only for types that are explicitely taken into account.
> Is there a way to retrieve type T for any T, and say print it out?
>
> Thanks
>
> Bolin
>
Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com