P
Pallav singh
Hi
i am getting Error while trying to display the Elements stored inside
Template Queue ( which internally uses STL List )
Thanks
Pallav
////////////////////////////////////////////////////////////////////////////////////////
PQueue.h
#include <list.h>
template <class Object>
class PQueue
{
private:
list<Object> queue;
public:
PQueue( );
PQueue( const PQueue & rhs );
~PQueue( );
bool isEmpty( ) const;
bool isFull( ) const;
const Object & top( ) const;
void makeEmpty( );
void pop( );
void push( const Object & x );
void display()const;
list<Object> & getQueue();
};
/////////////////////////////////////////////////////////////////////////////////////////////
PQueue.cc
#include "PQueue.h"
#include <iostream.h>
#include <list.h>
template <class Object>
PQueue<Object>:
Queue( )
{
list<Object> queue;
}
template <class Object>
PQueue<Object>:
Queue( const PQueue<Object> & rhs )
{
queue = rhs.getQueue();
}
template <class Object>
PQueue<Object>::~PQueue( )
{
queue.clear();
}
template <class Object>
list<Object> & PQueue<Object>::getQueue( )
{
return queue;
}
template <class Object>
bool PQueue<Object>:: isEmpty( ) const
{
return ( queue.size() == 0 );
}
template <class Object>
bool PQueue<Object>:: isFull( ) const
{
return false;
}
template <class Object>
const Object & PQueue<Object>::top( ) const
{
queue.front();
}
template <class Object>
void PQueue<Object>:
op( )
{
queue.pop_front();
}
template <class Object>
void PQueue<Object>:
ush( const Object & x )
{
queue.push_back(x);
}
template <class Object>
void PQueue<Object>::display( )const
{
// list<int>::iterator iter;
list<Object>::iterator iter;
cout << "mylist contains:";
for ( iter = queue.begin() ; iter != queue.end(); iter++ )
cout << " " << *iter << endl;
}
////////////////////////////////////////////////////////////////////////////////////////
TestQueueLi.cc
#include "PQueue.cc"
#include <iostream.h>
int main( )
{
PQueue<int> s;
for( int i = 0; i < 10; i++ )
s.push( i );
s.display();
s.pop();
s.pop();
s.pop();
s.display();
cout << "s" << endl;
return 0;
}
PQueue.cc: In member function `void PQueue<Object>::display() const':
PQueue.cc:69: error: expected `;' before "iter"
PQueue.cc:71: error: `iter' undeclared (first use this function)
PQueue.cc:71: error: (Each undeclared identifier is reported only once
for each function it appears in.)
PQueue.cc: In member function `void PQueue<Object>::display() const
[with Object = int]':
TestQueueLi.cc:11: instantiated from here
PQueue.cc:69: error: dependent-name `
std::list<Object,std::allocator<_CharT> >::iterator' is parsed as a
non-type, but instantiation yields a type
PQueue.cc:69: note: say `typename
std::list<Object,std::allocator<_CharT> >::iterator' if a type is
meant
i am getting Error while trying to display the Elements stored inside
Template Queue ( which internally uses STL List )
Thanks
Pallav
////////////////////////////////////////////////////////////////////////////////////////
PQueue.h
#include <list.h>
template <class Object>
class PQueue
{
private:
list<Object> queue;
public:
PQueue( );
PQueue( const PQueue & rhs );
~PQueue( );
bool isEmpty( ) const;
bool isFull( ) const;
const Object & top( ) const;
void makeEmpty( );
void pop( );
void push( const Object & x );
void display()const;
list<Object> & getQueue();
};
/////////////////////////////////////////////////////////////////////////////////////////////
PQueue.cc
#include "PQueue.h"
#include <iostream.h>
#include <list.h>
template <class Object>
PQueue<Object>:
{
list<Object> queue;
}
template <class Object>
PQueue<Object>:
{
queue = rhs.getQueue();
}
template <class Object>
PQueue<Object>::~PQueue( )
{
queue.clear();
}
template <class Object>
list<Object> & PQueue<Object>::getQueue( )
{
return queue;
}
template <class Object>
bool PQueue<Object>:: isEmpty( ) const
{
return ( queue.size() == 0 );
}
template <class Object>
bool PQueue<Object>:: isFull( ) const
{
return false;
}
template <class Object>
const Object & PQueue<Object>::top( ) const
{
queue.front();
}
template <class Object>
void PQueue<Object>:
{
queue.pop_front();
}
template <class Object>
void PQueue<Object>:
{
queue.push_back(x);
}
template <class Object>
void PQueue<Object>::display( )const
{
// list<int>::iterator iter;
list<Object>::iterator iter;
cout << "mylist contains:";
for ( iter = queue.begin() ; iter != queue.end(); iter++ )
cout << " " << *iter << endl;
}
////////////////////////////////////////////////////////////////////////////////////////
TestQueueLi.cc
#include "PQueue.cc"
#include <iostream.h>
int main( )
{
PQueue<int> s;
for( int i = 0; i < 10; i++ )
s.push( i );
s.display();
s.pop();
s.pop();
s.pop();
s.display();
cout << "s" << endl;
return 0;
}
PQueue.cc: In member function `void PQueue<Object>::display() const':
PQueue.cc:69: error: expected `;' before "iter"
PQueue.cc:71: error: `iter' undeclared (first use this function)
PQueue.cc:71: error: (Each undeclared identifier is reported only once
for each function it appears in.)
PQueue.cc: In member function `void PQueue<Object>::display() const
[with Object = int]':
TestQueueLi.cc:11: instantiated from here
PQueue.cc:69: error: dependent-name `
std::list<Object,std::allocator<_CharT> >::iterator' is parsed as a
non-type, but instantiation yields a type
PQueue.cc:69: note: say `typename
std::list<Object,std::allocator<_CharT> >::iterator' if a type is
meant