T
Todd Aspeotis
Hello all. I've been having some very weird compiler errors in regards
to my classes. I have my base node class here:
template <class T> class CNode : public CManaged
//-- Base node used to traverse either dynamic or static data
structures
//-- transparently.
{
public:
//-- Declarations:
typedef T baseType;
//-- Data:
T m_tData;
//-- Default constructor/destructor:
CNode();
~CNode();
//-- Transparent traversal:
inline virtual CNode<T> *getLeft() = 0;
inline virtual CNode<T> *getRight() = 0;
AUTO_SIZE;
};
And then later on down the track I have my dynamically overloaded
node:
template <class T> class CNode_Dynamic : public CNode<T>
//-- Node used to traverse a dynamic data structure. Derived from
CNode<T>.
{
public:
//-- Data:
CNode_Dynamic *m_pnLeft;
CNode_Dynamic *m_pnRight;
//-- Default constructor/destructor:
CNode_Dynamic();
~CNode_Dynamic();
//-- Transparent traversal:
inline CNode<T> *getLeft();
inline CNode<T> *getRight();
AUTO_SIZE;
};
Finally, I have the implementation of getLeft() and getRight() here:
template <class T> CNode<T> *CNode_Dynamic<T>::getLeft()
{
return m_pnLeft;
}
template <class T> CNode<T> *CNode_Dynamic<T>::getRight()
{
return m_pnRight;
}
Now, what VC++ . NET is telling me that it can't initiate an abstract
class of CNode_Dynamic<int> because I haven't defined getLeft or
getRight. Is there something I'm missing? Any help would be much
appreciated.
-- Todd
to my classes. I have my base node class here:
template <class T> class CNode : public CManaged
//-- Base node used to traverse either dynamic or static data
structures
//-- transparently.
{
public:
//-- Declarations:
typedef T baseType;
//-- Data:
T m_tData;
//-- Default constructor/destructor:
CNode();
~CNode();
//-- Transparent traversal:
inline virtual CNode<T> *getLeft() = 0;
inline virtual CNode<T> *getRight() = 0;
AUTO_SIZE;
};
And then later on down the track I have my dynamically overloaded
node:
template <class T> class CNode_Dynamic : public CNode<T>
//-- Node used to traverse a dynamic data structure. Derived from
CNode<T>.
{
public:
//-- Data:
CNode_Dynamic *m_pnLeft;
CNode_Dynamic *m_pnRight;
//-- Default constructor/destructor:
CNode_Dynamic();
~CNode_Dynamic();
//-- Transparent traversal:
inline CNode<T> *getLeft();
inline CNode<T> *getRight();
AUTO_SIZE;
};
Finally, I have the implementation of getLeft() and getRight() here:
template <class T> CNode<T> *CNode_Dynamic<T>::getLeft()
{
return m_pnLeft;
}
template <class T> CNode<T> *CNode_Dynamic<T>::getRight()
{
return m_pnRight;
}
Now, what VC++ . NET is telling me that it can't initiate an abstract
class of CNode_Dynamic<int> because I haven't defined getLeft or
getRight. Is there something I'm missing? Any help would be much
appreciated.
-- Todd