Re: "template container" declaration error
On Feb 11, 6:10 pm, vl_ <vlyamt...@gmail.com> wrote:
I am trying to declare "containerr" class for the template, so
that it would contain explicit size for the templated object:
MyClass.hpp
#include <queue>
template <typename T>
// Container class
class Element
{
public:
Element( T t, int size)
{
m_t = t;
m_size = size;
}
virtual ~Element() {};
T m_t;
int m_size;
} ;
// Queue wrapper
template <typename T>
class MyQueue
...
//STL queue declaration:
std::queue <Element> m_queue;
....
I have the following error: "ISO C++ forbids declaration of
`m_queue' with no type,
expected a type, got `Element'"
Why doesn't compiler see declaration of type 'Element' ?
The compiler can see the definition of Element. That's how it
knows that it's not a type. Otherwise, it would probably give
an error message along the lines of "unknown symbol".
A template is not a type. A class template is a specification
which can be instantiated to create a type, but only the
instantiations are types. You need something along the lines
of:
std::queue< Element< T > > m_queue ;
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34