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
<ga*******@voila.fr> wrote in message
news:11**********************@z14g2000cwz.googlegr 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