I think there have been a lot of discussion about
this,
It might been related to the template serialization
traits in the documentation , but the explanation was a little to subtle for
me, \
In fact, I cannot really understand how to avoid
The unregistered
exception when I use a template like this.
// template
declaration pseudo code
Class A
{
Virtual ~A(){};
template<class
Archive> void serialize(Archive & ar, const unsigned int version){};
};
Template <T> Class B : public A
{
T Object;
B(T& _object)
{
Object=_object;
}
template<class
Archive> void serialize(Archive & ar, const unsigned int version)
{
Ar & Object;
};
}
//Main Code
Vector<A*> array;
Template<T>
void Add(T& val)
{
B<T>* objectToAdd= new B<T>(val)
array.push_back(objectToAdd);
}
//User code
Add((int)0);
And
when i archive the array in another .cpp the exception is raised, because
the
class B<int> as not been exported.
I
would like to avoid explicitly declare
BOOST_CLASS_EXPORT_GUID(B<int>, "B_int")
For
each instanciation of B<> somewhere in the global space.
In
the Add() or in the template declaration that s ok, but I cannot suppose what
types that the user will use.
Thanks
in advance..
- VDB
-
"LNK2019: unresolved external symbol"
Olivier Vanden Bos MSN#The
AI Programmer
UBISOFT Montreal