Re: class nested in template class: Dev-C works while VC6 not
LiDongning <lidongning@gmail.com> wrote:
I am trying to create a class nested in a template. Following piece of
codes works in Dev-C but can not be complied in VC6 with following
error message.
error LNK2001: unresolved external symbol "public: __thiscall
Ta<double>::Tb::Tb(double)" (??0Tb@?$Ta@N@@QAE@N@Z)
VC6 has a very limited support for templates. You often need to tweak
and simplify to keep it happy.
template <class T>
class Ta
{
public:
class Tb
{
public:
T x;
Tb(T=T(0));
};
Tb u;
};
template <class T>
Ta<T>::Tb::Tb(T inx):x(inx)
{
}
Try defining the constructor in-class. I seem to remember VC6 doesn't
support out-of-class definitions.
template <class T>
class Ta
{
public:
class Tb
{
public:
T x;
Tb(T inx=T(0)) : x(inx) {}
};
Tb u;
};
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925