Doh, I don't know how many times I have done that.
New problem: My attempt at creating new Node objects from inside an instance of the class is not working. Here is my code:
queue.h
Code:
/*
Nick Bakewell
10/10/07
*/
#ifndef QUEUE
#define QUEUE
#include <string>
class queue
{
public:
queue(void);
bool push(std::string ss);
std::string pop(void);
std::string first(void) const;
std::string last(void) const;
bool err(void);
private:
struct Node
{
std::string nvalue;
Node *pNext;
Node *pPrev;
};
Node *pHead, *pTail, *myNode;
};
#endif
And my driver:
Code:
#include <cstdlib>
#include <iostream>
#include <string>
#include "queue.h"
using namespace std;
int main(int argc, char *argv[])
{
queue myQueue();
for(int i = 0; i < 5; i++)
{
myQueue.myNode = new Node; // line 14
cin >> myQueue.myNode->nvalue; // line 15
myQueue.AddNode(myQueue.myNode); // line 16
}
[...]
The compiler is giving me this error:
Code:
14main.cpp request for member `myNode' in `myQueue', which is of non-class type `queue ()()'
14 main.cpp `Node' has not been declared
15 main.cpp request for member `myNode' in `myQueue', which is of non-class type `queue ()()'
16 main.cpp request for member `AddNode' in `myQueue', which is of non-class type `queue ()()'
16 main.cpp request for member `myNode' in `myQueue', which is of non-class type `queue ()()'
queue.cpp
Code:
/*
Nick Bakewell
10/10/07
*/
#include <iostream>
#include <cstdlib>
#include <string>
#include "queue.h"
using namespace std;
queue::queue()
: pHead(NULL), pTail(NULL), myNode(NULL)
{}
bool queue::push(string ss)
{
if(pHead == NULL)
{
pHead = myNode;
myNode->pPrev = NULL;
}
else
{
pTail->pNext = myNode;
myNode->pPrev = pTail;
}
pTail = myNode;
myNode->pNext = NULL;
return true;
}
string queue::pop()
{
Node *pTemp;
pTemp = pTail;
pTail = pTail->pPrev;
pTail->pNext = NULL;
return "\nPop: " + pTemp->nvalue + "\nNew last value: " + pTail->nvalue + "\n";
}
string queue::last()
{
return pTail->nvalue;
}
string queue::first()
{
return pHead->nvalue;
}
bool queue::err()
{
return false;
}